gpt4 book ai didi

functional-programming - 米兰达错误无法在第 12 行将 [[char]] 与 [char] 统一起来

转载 作者:行者123 更新时间:2023-12-04 08:42:32 28 4
gpt4 key购买 nike

使用 miranda 进行编码时遇到问题,我只是函数式编程的新手,所以如果我不犯容易的错误,请狠狠地打我一巴掌,这样我就学会了

无论如何,我在第 12 行遇到错误,因为 unifyin char with char 有问题

这是我的第 12 行

= [filter (= typed) ((read file) ++ dictionary)]

这是到目前为止我的程序的其余部分
filename == [char]
word == [ char ]
dictionary :: [ word ]



spell:: filename -> filename -> [ char ]
look:: word -> filename ->[[[ char ]]]


look typed file
= [filter (= typed) ((read file) ++ dictionary)]

dictionary =
["aardvark","bell","camp","dictionary","editor","file","ground",
"grounds","help","intelligent","joint","kettle","light","memory",
"nettle","orange","quite","research","standard","terminal",
"umbrella","violin","water","xenon","yellow","zoo","aaa","abb",
"acc","add","aee"]

所以有人能指出我哪里出错了吗?

最佳答案

我从未使用过 Miranda,但使用过 Haskell,问题似乎在于您试图附加一个字符串和一个字符串列表;然而,我猜是 ++需要两个相同类型的列表(如在 Haskell 中):

(++) :: [a] -> [a] -> [a]

但是 read file类型为 [char] ,并且字典的类型是 [[char]] .

尝试将这些替换为 ++ 的类型签名导致类型错误:
(++) :: [char] -> [[char]] -> ?? -- type error!!

也许你想拆分 (read file)将其附加到 dictionary 之前.然后你会附加 [[char]][[char]] ,这将工作得很好。

备注 我对 Miranda 一无所知——这个答案是基于查看您的代码、您提供的错误消息以及我在 Haskell 上的经验(我在那里犯过很多类似的错误)。

关于functional-programming - 米兰达错误无法在第 12 行将 [[char]] 与 [char] 统一起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638310/

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