2017-12-23 11 views
2

私は人気のあるbookからハスケルを学んでいます。なぜ「変数はスコープに含まれていません」と表示されますか?<*>何もありません。

それはfollowing ghci commandが含まれています

ghci> Just ord <*> Nothing 
Nothing 

私はGHCiの中でこれを実行すると、私が手:

<interactive>:1:6: error: 
    • Variable not in scope: ord :: a0 -> b 
    • Perhaps you meant one of these: 
     ‘or’ (imported from Prelude), ‘odd’ (imported from Prelude) 

私はタイプミスがあると思い、どちらかの著者ミスやハスケルのバージョンに起因します構文を変更する。

私の質問はJust ord <*> Nothingにはvariable not in scopeがどうして得られますか?

答えて

6

A quick search for "ord" on Hoogleは、it lives in the Data.Char moduleを明らかにする。 (私はそれがいつもそこにあったのか、それとも最近になって動いたのか分かりません)。セッションにData.Charをインポートするだけです。

ghci> import Data.Char 
ghci> Just ord <*> Nothing 
Nothing 
+2

いつもありました。その機能を持たない[Haskell 98 'Prelude'](https://www.haskell.org/onlinereport/standard-prelude.html)を参照してください。 'Prelude'は' fromEnum'です。 – dfeuer

+0

ありがとう@dfeuer - 私はそれを試して、タイプヒントが必要でした - あなたはその1つの作品を作ろうとしましたか? – hawkeye

+0

@hawkeye、 'Just(fromEnum :: Char - > Int)<*> Nothing'を使うことができます。 – dfeuer

関連する問題