2013-05-03 12 views
5

Jako moje pierwsze doświadczenie w module, zaimportowałem Data.List do mojego GHCi. (Dokładniej, wpisałem na moim GHCi import Data.List). Wygląda na to, że działa dobrze, ponieważ mogę używać niektórych funkcji, których wcześniej nie miałem, takich jak foldl' w moim GHCi.Haskell: Nie w zakresie: foldl?

pisałem haha = foldl' (+) 0 [1..10] na mój Notepad ++ i zapisaniu go, a następnie ładowane GHCi mówi Not in scope: foldl' choć workds dobrze po wpisaniu foldl' (+) 0 [1..10] bezpośrednio na mój GHCi.

Dlaczego i jak zdefiniować funkcje za pomocą foldl' w moim notatniku?

Odpowiedz

12

Zakres podany w podpowiedzi GHCi niekoniecznie jest taki sam jak zakres w jakimkolwiek pliku ładowanym z GHCi. GHCi ma własną koncepcję bieżącego zakresu, który zwykle obejmuje najwyższy poziom niezależnie od tego, jaki plik załadowałeś, a także inne moduły dodane przez ciebie lub cokolwiek, co zaimportujesz. (Zachowuje się również inaczej, jeśli ładuje się plik, który nie został zmieniony od czasu jego ostatniej kompilacji, co nadal mnie myli ...)

W każdym razie wystarczy zaimportować Data.List w samym pliku kodu, np .:

module Main where 

import Data.List 

haha = foldl' (+) 0 [1..10] 

Po wykonaniu, że ładowanie pliku powinno skutkować Data.List efektywnie przywożone w tym GHCi zapyta, jak również, ponieważ jest to widoczne na toplevel modułu załadowany.

+0

Dziękuję bardzo za szybką odpowiedź! – Tengu

+0

Nawiasem mówiąc, możesz użyć ': load * Foo', aby GHCI ładował się ze źródła, nawet jeśli w katalogu bieżącym znajdują się skompilowane obiekty. – Carl

+4

Wiem, że to nie ma większego znaczenia, ale po prostu zaimportuję funkcje, którymi mnie interesuję, np. 'import Data.List (foldl ')' – chamini2

Powiązane problemy