2
将无点转换为有点
作为一名Haskell黑客,我更喜欢无意义的符号而不是有意义的符号。不幸的是,有些人发现难以理解的无点符号,而当我用有针对性的方式编写时,我发现很难获得正确的括号数量。帮我将用pointfree编写的代码转换为有意义的符号! 关于 在无点表示法中,我们使用点(是的,确实)将一个函数的输出馈送到另一个函数。说,如果您有一个succ将数字加1的函数,并且想制作一个将数字加3的函数,而不是这样做: \x -> succ(succ(succ(x))) 您可以这样做: succ.succ.succ Pointfree仅适用于带有单个参数的函数(无论如何,在这个挑战中),因此,如果我们的函数不是succ,而是add采用2个数字并将它们相加,我们将不得不向其提供参数,直到只剩下一个: pointful: \x -> add 1(add 1(add 1 x)) pointfree: add 1 . add 1 . add 1 最后,函数可以将其他函数用作参数: Pointfree: map (f a . f b) . id Pointful: \x -> map (\x -> f a (f b x)) (id x) Javascript …