|
[boo]
A Pattern Matching facility for boo
[
bamboo
]
I've finally took some time off this weekend to implement a simple object pattern matching facility as part of the newly created boo-extensions project. import Boo.PatternMatching
import Boo.Adt
def eval(e as Expression) as int:
match e:
case Const(value):
return value
case Add(left, right):
return eval(left) + eval(right)
def simplify(e as Expression) as Expression:
match e:
case Add(left: Const(value: 0), right):
return simplify(right)
case Add(left, right: Const(value: 0)):
return simplify(left)
case Add(left, right):
return Add(simplify(left), simplify(right))
case _:
return _
data Expression = Const(value as int) | Add(left as Expression, right as Expression)
e = Add(Add(Const(19), Const(0)), Add(Const(0), Const(23)))
print simplify(e)
print eval(e)
print eval(simplify(e))
'match' coupled with our recently acquired quasiquoting capabilities makes writing macros for boo a pleasant endeavour actually. Looks good. Have you considered extending the matching with something like F#'s active patterns? --, October 17, 2007 07:46 AM
F#'s active patterns look interesting. I'll check them out. Thanks! --Rodrigo B. de Oliveira, October 17, 2007 11:58 PM
Post a comment
|