2012-02-09 11 views
1

この質問の単純さを間違えても、私の問題を解決した別の質問は見つかりませんでした。私はhaskellとleksahをインストールしてから、自然数libをインストールするために "cabal install nat"を実行しました。 libは "/Users/jstanford/Library/Haskell/ghc-7.0.4/lib/nat-0.2/lib"にインストールされているようです。cabalをインストールした後でhaskellにlibをインポートする

私はleksahで作業スペースとパッケージを作成し、私のprefsを更新しましたで検索する:パッケージソースの

/Library/Frameworks/GHC.framework /ユーザ/ jstanford /ライブラリ/ハスケル /Users/jstanford/.leksah-0.10/packageSources

および/〜デフォルトのままに.leksah-0.10 /パッケージソースを解凍するためのパッケージソース。

私のコードは次のようになりますので、私は、「機能のアルゴリズムデザインの真珠」からのコードの最初のスニペットをつかん:

----------------------------------------------------------------------------- 
-- 
-- 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は\と配列のための輸入を見つけることができたことはできませんが、ナットを見つける。どのようにインポートを見つけるための任意のポインター?コンパイラは、accumArray(V)についても不平を言います。私はVが本当に大文字のVではなく、むしろVのようないくつかのシンボルであると考えています。それについてのガイダンスも非常に高く評価されます!

答えて

3

Nat型がData.Number.Natで定義されているので、あなたがあなたのファイルの先頭にそれをインポートする必要があります。(V)については

import Data.Number.Nat 

、おそらく(||)であることを意味しています。 "V"は論理結合の記号であり、より一般的にブールまたは演算子として知られています。このような演算子の置換は、Haskellのtypesetetコードでは一般的ですが、あなたがそれらを見るのに慣れるまではかなり混乱するかもしれません。

さらに、配列関数をGHC.Arrからインポートしないでください。それは内部GHCモジュールです。代わりにData.Arrayをインポートすることをおすすめします。

+0

パッケージの依存関係にnatを追加する必要がありました。この質問はまた助けになりました:http://stackoverflow.com/questions/4170426/importing-haskell-modules – jxstanford

関連する問題