2016-06-03 10 views
-2

In einem Modul zu besitzen Ich habe diese Art:Convert [Char] Typ in Haskell

module Verbally (verbally, Currency) where 
import Data.String.Utils 

    data Currency = Currency { 
    singular :: String, 
    plural :: String 
} deriving (Read, Show) 

aud = Currency "Australian Dollar" "Australian Dollars" 
bgn = Currency "Lev" "Levs" 

In meinem zweiten (Haupt-) Modul, das wie folgt aussieht:

main = do 
    args <- getArgs 
    putStrLn $ verbally (args !! 0) (args !! 1) 

Ich möchte umrechnen Argumente !! 1 zu Währung.

Verbal nimmt Integer und Währung als Argumente.

Übersetzungsfehler:

Couldn't match type ‘[Char]’ with ‘Currency’ 
Expected type: [Currency] 
    Actual type: [String] 
In the first argument of ‘(!!)’, namely ‘args’ 
In the second argument of ‘verbally’, namely ‘(args !! 1)’ 
+1

'Currency' hat eine' Read' Instanz, so wie zur Verwendung von 'read (args !! 1)' – ErikR

+0

Für zukünftige Suchen kann es hilfreich sein, den Ausdruck 'parse' zu verwenden. Was Sie sagen, ist, dass Sie die Zeichenfolge analysieren möchten und es gibt viele Möglichkeiten, das zu tun, die einfachste Methode ist 'read' und' Text.Read.readMaybe'. –

Antwort

2

Ich habe keine Ahnung, was verbally erfordert, aber ich vermute, Sie wollen, dass diese:

main = do 
    args <- getArgs 
    putStrLn $ verbally $ Currency (args !! 0) (args !! 1)