我被一些烦人的事情绊倒了。我知道 haskell 与弱头部范式 (WHNF) 一起工作,我知道这是什么。将以下代码输入 ghci(我正在使用命令 :sprint 将表达式简化为 WHNF,据我所知。):
let intlist = [[1,2],[2,3]]
:sprint intlist
Run Code Online (Sandbox Code Playgroud)
给intlist = _这使得完全意义的我。
let stringlist = ["hi","there"]
:sprint stringlist
Run Code Online (Sandbox Code Playgroud)
给stringlist = [_,_]
这个已经让我困惑。但是之后:
let charlist = [['h','i'], ['t','h','e','r','e']]
:sprint charlist
Run Code Online (Sandbox Code Playgroud)
出人意料地给出 charlist = ["hi","there"]
据我了解 Haskell,字符串只不过是字符列表,这似乎是通过检查类型"hi" :: [Char]和['h','i'] :: [Char].
我很困惑,因为根据我的理解,上面的所有三个示例或多或少都相同(列表列表),因此应该减少到相同的 WHNF,即 _。我错过了什么?
谢谢
haskell functional-programming reduction ghci weak-head-normal-form