gpt4 book ai didi

haskell - haskell在lambda中嵌套let

转载 作者:行者123 更新时间:2023-12-03 08:23:42 24 4
gpt4 key购买 nike

我必须错过一些东西,但是我看不到为什么这个人为的例子不起作用:

test1 :: Int
test1 = let g = \s -> s + s
f = \u -> let h = \t -> t + t
h' = \v -> v + v
in g (h (h' u))
in f 1

ghci>输入'h'解析错误

但是,这等效的部分还可以:
test2 :: Int
test2 = let g = \s -> s + s
f = \u -> let h = \t -> t + t; h' = \v -> v + v
in g (h (h' u))
in f 1

我相信这是我的语法问题,但是在test1中我看不到任何错误。谢谢。

编辑:
感谢您指出发现问题的正确方法。
事实证明,这与vim-haskellConceal插件有关。我将代码复制-粘贴-保存在另一个编辑器中,然后切换回vim并注意到嵌套的让入块中有一个不同的缩进。删除该插件后一切都很好。

编辑:
在我简短地阅读它的代码而没有发现任何不当之处时,我应该不再责怪该插件。也许vim7.3中的“隐藏”功能是根本原因。但我想去温暖舒适的床上...

最佳答案

确实有效。我只是运行该代码并得到

~ % ghci Hello.hs 
GHCi, version 7.4.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main ( Hello.hs, interpreted )
Ok, modules loaded: Main.
*Main> test1
8
*Main>

换句话说,请确保您的代码中没有任何制表符( \t)!

关于haskell - haskell在lambda中嵌套let,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14299647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com