Details
-
Type:
Defect
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
Description
One of the monad laws is that (m-bind (m-result v) f) should be the same as (f v). However, this is not the case in maybe-m:
user=> (with-monad maybe-m (m-bind (m-result nil) nil?))
nil
user=> (nil? nil)
true
The crux of the problem is that in algo.monad's maybe-m, there is no way to wrap a nil in a Just-like container.