2014-07-03 19 views
7

Spodziewam się, że następujące GetArgs.hs wydrukować argumenty przekazywane do niego.Zrozumienie `getArgs`

import System.Environment 

main = do 
    args <- getArgs 
    print args 

Jednak po załadowaniu go w ghci, pojawia się następujący błąd:

ghci> main 3 4 3 

<interactive>:39:1: 
    Couldn't match expected type `a0 -> a1 -> a2 -> t0' 
       with actual type `IO()' 
    The function `main' is applied to three arguments, 
    but its type `IO()' has none 
    In the expression: main 3 4 3 
    In an equation for `it': it = main 3 4 3 

Od print ma tego typu:

ghci>: t drukuj druku :: wykazują = > a -> IO()

Spodziewałbym się, że print args zadziałało.

Dlaczego nie?

+2

Spróbuj ': main 3 4 3'. Jeszcze lepiej, skompiluj swój program i uruchom go z wiersza poleceń. –

Odpowiedz

11

print args działa dobrze. To, co nie działa, to main 3 4 3. main nie przyjmuje żadnych argumentów, ale próbujesz wywołać to za pomocą trzech.

Jeśli chcesz symulować wywoływanie programu za pomocą parametrów wiersza poleceń z ghci, możesz użyć polecenia :main (z dwukropkiem z przodu). Alternatywnie możesz skompilować swój program i uruchomić go z wiersza poleceń z podanymi argumentami.

10

Choć w ghci użyć polecenia Uruchom

:run main 3 4 3

+0

+1 dla ': run'. Wiedziałem o ': main', ale nie tym. – mb14