Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (*flatten (prejme izraz, ki ga sestavljajo konstante, spremenljivke in poljubno število operatorjev / (podanih v Pair obliki).
- Vrne ekvivalenten izraz, ki vsebuje največ eno deljenje (Operator "/" v Pair obliki).
- Vrnjeni izraz lahko vsebuje še konstante, spremenljivke ter operatorja "+" in "*".)*)
- fun flatten(a: expression) =
- case a of
- Operator("/", Pair([Operator("/", Pair([a, Constant b ])) , Operator("/", Pair([c, d])) ])) => Operator("/", Pair([ Operator("*", Pair([a, d])) , Operator("*", Pair([Constant b, c])) ]))
- | Operator("/", Pair([Operator("/", Pair([a, Variable b ])) , Operator("/", Pair([c, d])) ])) => Operator("/", Pair([ Operator("*", Pair([a, d])) , Operator("*", Pair([Variable b, c])) ]))
- |Operator("/", Pair([Operator("/",Pair([Operator("*", a) , Operator("*", b) ]) ) , Operator("/", Pair([ Operator("*", c) , Operator("*", d) ]) ) ])) => Operator("/", Pair([ Operator("*", Pair([Operator("*", a) , Operator("*", d) ]) ) , Operator("*", Pair([Operator("*", b) , Operator("*", c)]) ) ]))
- |Operator("/", Pair([a,b])) => flatten(Operator("/", Pair([flatten a, flatten b])))
- (*count_constants (vrne število vseh konstant, ki se pojavljajo v vhodnem izrazu)*)
- fun count_constants(a: expression) =
- case a of
- Operator("/", Pair([a,b])) => count_constants(a) + count_constants(b)
- | Variable a => 0
- | Constant a => 1
- (*sum_constants (vrne vsoto vseh konstant, ki se pojavljajo v vhodnem izrazu)*)
- fun sum_constants(a: expression) =
- case a of
- Operator("/", Pair([a,b])) => sum_constants(a) + sum_constants(b)
- | Variable a => 0
- | Constant a => a
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement