请原谅这个问题的简单性,但我没有找到另一个解决我问题的问题。我安装了haskell和leksah,然后执行了"cabal install nat"来安装自然数lib。该库看起来像是安装在"/Users/jstanford/Library/Haskell/ghc-7.0.4/lib/nat-0.2/lib"中
我在leksah中创建了一个工作区和一个包,并更新了我的prefs以查找:
/图书馆/框架/GHC框架/用户/jstanford/Library/Haskell/用户/jstanford/.leksah-0.10/packageSources
对于包源,并保留默认~/.leksah-0.10/packageSources用于拆包cabal包。
我从"函数算法设计之珠"中获得了第一段代码,所以我的代码看起来是这样的:
-----------------------------------------------------------------------------
--
-- Module : Main
-- Copyright :
-- License : AllRightsReserved
--
-- Maintainer :
-- Stability :
-- Portability :
--
-- |
--
-----------------------------------------------------------------------------
module Main (
main
) where
import Data.List ((\))
import GHC.Arr (accumArray, elems, Array(..))
minfree :: [Nat] -> Nat
minfree xs = head([0 ..])\ xs
search :: Array Int Bool -> Int
search = length takeWhile id . elems
checklist :: [Int] -> Array Int Bool
checklist xs = accumArray(V) False (0,n)
(zip (filter (<= n) xs) (repeat True))
where n = length xs
main = (
minfree[0, 2, 5]
)
Leksah能够找到\和Array的导入,但找不到Nat。有关于如何找到导入的指针吗?编译器还抱怨accumArray(V)。我怀疑V并不是大写字母V,而是一些看起来像V的符号。对此的指导也将不胜感激!
Nat
类型是在Data.Number.Nat
中定义的,因此您应该在文件的顶部导入它:
import Data.Number.Nat
至于(V)
,它可能是(||)
。"V"很可能是∧,逻辑析取的符号:更常见的是布尔运算符或。像这样的运算符替换在类型集Haskell代码中很常见,但在您习惯于看到它们之前,可能会非常令人困惑。
此外,您不应该从GHC.Arr
导入数组函数;这是一个内部GHC模块;我建议导入Data.Array
。