2017-12-23 1 views
2

Ich lerne Haskell von einem beliebten book.Warum bekomme ich 'Variable nicht im Bereich' für Just ord <*> Nichts?

Es umfasst die following ghci command:

ghci> Just ord <*> Nothing 
Nothing 

Als ich dies in GHCI laufen erhalte ich:

<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) 

Ich denke, es ist ein Tippfehler, entweder aufgrund eines Autors Fehler oder die Version von Haskell Ändern der Syntax

Meine Frage ist: Warum bekomme ich variable not in scope für Just ord <*> Nothing?

Antwort

6

A quick search for "ord" on Hoogle offenbart, dass it lives in the Data.Char module. (Ich habe keine Ahnung, ob es immer da war, oder ob es erst kürzlich dorthin verlegt wurde.) Sie müssen also nur Data.Char in Ihre ghci Sitzung importieren.

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

Es war schon immer da. Siehe [Haskell 98 'Prelude'] (https://www.haskell.org/onlinereport/standard-prelude.html), das diese Funktion nicht hat. Die 'Prelude' Alternative ist' fromEnum'. – dfeuer

+0

Danke @dfeuer - Ich habe es ausprobiert und es brauchte Tipptipps - hast du versucht, das eine Arbeit zu machen? – hawkeye

+0

@hawkeye, können Sie 'Just (fromEnum :: Char -> Int) <*> Nichts verwenden. – dfeuer

Verwandte Themen