Konrad Hinsen <konrad.hin...@fastmail.net> writes: > For a function of a single argument, m-lift and m-fmap are equivalent.
In Jim Duey's essay Higher Level Monads¹, he writes the following on the lift operator: ,----[ m-lift ] | If you have a function that you would like to turn into a monadic | function, that is a function that can be passed to m-bind, you use | m-lift. | | m-lift takes two parameters, a function to lift and the number of | arguments that function accepts. The argument count is the first | parameter and the function is second. The return value is a function | that can be passed to m-bind. `---- Isn't it the case, though, that a lifted function /can't/ be passed to bind, because it's not a monadic function? A lifted function takes monadic values as input, rather than a basic value. Is there some operator that converts a "normal" function a -> b to a monadic function a -> m b such that one could adapt a "normal" function for use in and among some other monadic functions (such as with m-chain)? I'm not sure such a translation is possible for all monads. I considered something like this ,---- | (defn as-monadic-fn [f] | (fn [v] | (m-result (f v)))) `---- but it looks too simple. Footnotes: ¹ http://intensivesystems.net/tutorials/monads_201.html -- Steven E. Harris
-- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en