使用cabal安装后在haskell中导入lib



请原谅这个问题的简单性,但我没有找到另一个解决我问题的问题。我安装了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

最新更新