我在和函子玩,我注意到一些有趣的事情:
简单地说,id可以在(a -> b) -> a -> b类型下实例化。对于列表函子,我们有fmap :: (a -> b) -> [a] -> [b],它和map一样。对于((->) r)函子(来自Control.Monad.Instances),fmap是函数组合,因此我们可以实例化fmap fmap fmap :: (a -> b) -> [[a]] -&
下面是标准Prolog中阶乘的计算:f(A, B) :- A > 0, C is A-1, f(C, D), B is A*D.我发现的问题是,我需要引入两个辅助变量(C和D),一个新语法(is),并且这个问题是不可逆的(即f(5,X)按预期工作,但f(X,120)没有)。天真地,我希望上面提到的C is A-1, <e