Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (* removes Ingredients from r1 recipe option list and returns recipe list *)
- fun removeHelper names r1 =
- let
- val removed = List.map (fn e => remove names e) r1
- val onlySome = List.filter (fn e => isSome(e)) removed
- in
- List.map (fn e => valOf(e)) onlySome
- end
- and remove names r =
- case r of
- Ingredient(s) => if List.foldl (fn(name, a) => name=s orelse a) false names then NONE else SOME(Ingredient(s))
- | AnyOf(r1) => let
- val removed = removeHelper names r1
- in
- if List.length removed > 1 then SOME(AnyOf(removed))
- else if List.length removed = 1 then SOME(List.nth(removed, 0))
- else NONE
- end
- | Action(s, r1) => let val removed = removeHelper names r1 in if List.length removed > 1 then SOME(Action(s, removed)) else NONE end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement