;; also known as bind in haskell (bind-func flatmap:[ADList{!b}*,ADList{!a}*,[ADList{!b}*,!a]*]* (lambda (M f) ;; alternative 'direct' implementation ;; (ADCons$ M (x xs) (append (f x) (flatmap xs f)) (ADNil)))) (join (fmap f M))))