gpt4 book ai didi

haskell - [a] 到底代表什么?

转载 作者:行者123 更新时间:2023-12-02 16:35:23 24 4
gpt4 key购买 nike

我正在做一些“Real World Haskell”中的练习。一是设计一个安全版本的init::[a] -> [a]

我应该从 safeInit::[a] -> Maybe [a] 开始

这就是我现在所拥有的。

safeInit :: [a] -> Maybe [a]
safeInit [] = Nothing
safeInit [a] = if length [a] <= 1
then Nothing
else Just (take (length [a] -1) [a])

在 GCHi 中,测试 safeInit [1,2] 时收到错误消息

* Exception: ch4exercise.hs:(21,1)-(24,44): Non-exhaustive patterns in function safeInit

我的印象是 [a] 只是代表 a 的列表(任意大小)。我做错了什么?

最佳答案

作为一种类型,[a] 确实代表“任意大小的 a 列表”。然而,作为一种模式,[a] 代表“一个仅包含一个元素的列表,此后应以名称 a 为人所知”。类似地,[a,b] 表示“包含两个元素的列表,第一个元素应称为 a,第二个元素应称为 b”等等。 [],正如您似乎已经知道的那样,代表“恰好包含 0 个元素的列表”。

这类似于将列表文字编写为表达式的方式。 IE。如果您编写 myList = [],则 myList 是空列表;如果您编写 myList = [x],则 myList code> 是一个仅包含一个元素的列表,该元素是变量 x 的值。

关于haskell - [a] 到底代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17975240/

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