2
4

2 回答 2

3

这是您正在寻找的代码。您的缺少允许默认规则的预处理器指令。并使用错误的引号字符。

-- Use default rules
{-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=defaultrules #-}

lookup :: k -> [(k,v)] -> Maybe v
lookup key (_++[(key,value)]++_ ) = Just value
lookup'default _ _ = Nothing

test_positive = lookup 2 [(2,3)] == Just 3
test_negative = lookup 1 [(2,3)] == Nothing

默认规则有多种用途。在搜索失败后重新获得控制权是一种特别有用的方法,因为您无法用相等来检查表达式是否失败。

于 2018-11-19T03:19:25.183 回答
2

如果删除选项“-F”,则不会调用解释行为的预处理器。

权限错误是由于并非所有可能的 Curry 程序中间表示都在 Ubuntu 包中预编译。不幸的是,CurryPP 的“默认规则转换器”需要这些中间表示之一。

Ubuntu/Debian 软件包仅用于使用 Curry 的内核。对于扩展和更高级的工具,我建议手动安装 PAKCS,例如,来自 https://www.informatik.uni-kiel.de/~pakcs/download.html的当前版本 如果你已经有 Ubuntu,一个简单的make应该是充足的。

于 2018-11-23T08:33:48.423 回答