August 07, 2005 [guards] syntax extension? | ||||
---|---|---|---|---|
| ||||
I usually prefer head/body speaking, i.e. first the main rule, then the fine grained exceptions. What about a syntax extension with the keywords `guarded' and `guards'. Example: int ackermann( int m, int m) { if(!m) return n + 1; if(!n) return ackermann( m-1, 1); return( ackermann( m-1, ackermann( m, n-1))); } would turn to: int ackermann( int m, int n) { guarded return( ackermann( m-1, ackermann( m, n-1))); guards{ !m: return n + 1; !n: return ackermann( m-1, 1); } } -manfred |
August 07, 2005 Re: [guards] syntax extension? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Manfred Nowak | Manfred Nowak wrote: > I usually prefer head/body speaking, i.e. first the main rule, then the fine grained exceptions. > > What about a syntax extension with the keywords `guarded' and `guards'. Example: Its an interesting concept... > int ackermann( int m, int m) > { > if(!m) return n + 1; > if(!n) return ackermann( m-1, 1); > return( ackermann( m-1, ackermann( m, n-1))); > } > > would turn to: > > int ackermann( int m, int n) > { > guarded return( ackermann( m-1, ackermann( m, n-1))); > > guards{ > !m: return n + 1; > !n: return ackermann( m-1, 1); > } > } > You can also do: # int ackermann (int m, int n) { # return # m # ? n # ? ackermann(m - 1, ackermann(m, n - 1)) # : ackermann(m - 1, 1) # : ackermann(n + 1) # ; # } -- Chris Sauls |
Copyright © 1999-2021 by the D Language Foundation