Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 这两个domonad-maybe-m语句之间有什么区别?_Clojure_Monads - Fatal编程技术网

Clojure 这两个domonad-maybe-m语句之间有什么区别?

Clojure 这两个domonad-maybe-m语句之间有什么区别?,clojure,monads,Clojure,Monads,以下两条语句给出了相同的结果: (with-monad maybe-m (domonad [a nil b (+ 1 a)] b)) ;; nil (domonad maybe-m [a nil b (+ 1 a)] b) ;; nil 我对clojure还是很陌生,尤其是monads,但我只是想弄清楚这件事的区别 谢谢如果你看一下的定义,你会发现它所做的只是从作为第一个参数给出的monad中提取有意义的函数 是一个“语法糖”,它允许

以下两条语句给出了相同的结果:

(with-monad maybe-m
  (domonad [a nil
           b (+ 1 a)]
    b)) ;; nil

(domonad maybe-m [a nil
          b (+ 1 a)]
  b) ;; nil
我对clojure还是很陌生,尤其是monads,但我只是想弄清楚这件事的区别


谢谢

如果你看一下的定义,你会发现它所做的只是从作为第一个参数给出的monad中提取有意义的函数

是一个“语法糖”,它允许您编写一元操作,而无需手动绑定和返回。它实际上在内部使用with monad来使用monads有意义的函数计算表达式

如果像在第一个示例中那样,只使用两个参数调用domonad,那么它假定您已经处于monad的上下文中,这意味着所有有意义的函数都可用。在第一个示例中,它们确实可用,因为您在调用之前通过与monad一起使用使它们可用。OTOH,如果您使用三个参数调用它,就像在第二个示例中一样,它首先使用with monad引入monad的上下文,然后继续计算绑定


所以本质上,这两个示例是完全相同的。

如果你看一下的定义,你会发现它所做的只是从作为第一个参数给出的单子中提取有意义的函数

是一个“语法糖”,它允许您编写一元操作,而无需手动绑定和返回。它实际上在内部使用with monad来使用monads有意义的函数计算表达式

如果像在第一个示例中那样,只使用两个参数调用domonad,那么它假定您已经处于monad的上下文中,这意味着所有有意义的函数都可用。在第一个示例中,它们确实可用,因为您在调用之前通过与monad一起使用使它们可用。OTOH,如果您使用三个参数调用它,就像在第二个示例中一样,它首先使用with monad引入monad的上下文,然后继续计算绑定


所以本质上,这两个示例是完全相同的。

如果你看一下的定义,你会发现它所做的只是从作为第一个参数给出的单子中提取有意义的函数

是一个“语法糖”,它允许您编写一元操作,而无需手动绑定和返回。它实际上在内部使用with monad来使用monads有意义的函数计算表达式

如果像在第一个示例中那样,只使用两个参数调用domonad,那么它假定您已经处于monad的上下文中,这意味着所有有意义的函数都可用。在第一个示例中,它们确实可用,因为您在调用之前通过与monad一起使用使它们可用。OTOH,如果您使用三个参数调用它,就像在第二个示例中一样,它首先使用with monad引入monad的上下文,然后继续计算绑定


所以本质上,这两个示例是完全相同的。

如果你看一下的定义,你会发现它所做的只是从作为第一个参数给出的单子中提取有意义的函数

是一个“语法糖”,它允许您编写一元操作,而无需手动绑定和返回。它实际上在内部使用with monad来使用monads有意义的函数计算表达式

如果像在第一个示例中那样,只使用两个参数调用domonad,那么它假定您已经处于monad的上下文中,这意味着所有有意义的函数都可用。在第一个示例中,它们确实可用,因为您在调用之前通过与monad一起使用使它们可用。OTOH,如果您使用三个参数调用它,就像在第二个示例中一样,它首先使用with monad引入monad的上下文,然后继续计算绑定

所以本质上,这两个样本是完全相同的