如何解决案例拆分在 PureScript 上的可能类型上
我正在通过遵循 PureScript by example 来学习 PureScript,并且在第 3 章(那里的其余定义)中有一个练习可以从沼泽中删除重复条目,但是我无法开始为可能(什么都没有/只是 e)。我也检查了 the syntax guide,但我无法抓住陷阱并继续获得 UnkNown data constructor nothing
。
import Prelude
import Data.AddressBook
import Control.Plus (empty)
import Data.List (List(..),(:),filter,head,foldl,tail)
import Data.Maybe (Maybe,isJust)
import Data.Newtype (overF)
skipIfDup :: AddressBook -> AddressBook -> AddressBook
skipIfDup newBook (Nil : book) = newBook
skipIfDup newBook (entry : book) =
skipIfDup newerBook book
where
newerBook :: AddressBook
newerBook =
case findEntry entry.firstName entry.lastName newerBook of
nothing -> newBook
Just e -> insertEntry e newBook
解决方法
“未知数据构造函数Nothing”的意思就是它所说的:编译器不知道Nothing
是什么,它在哪里定义。
你如何让它知道它是在哪里定义的?与您在程序中使用的所有其他内容相同 - 使用 import
!
您已经有了 import Data.Maybe (Maybe)
,但这还不够:这只是导入类型 Maybe
,而不是它的构造函数。
要导入 Nothing
构造函数,请将其添加到括号中的类型之后,如下所示:
import Data.Maybe (Maybe(Nothing),isJust)
或者您可以使用两个点来导入所有存在的构造函数:
import Data.Maybe (Maybe(..),isJust)
后者是更被接受的模式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。