/ / Haskell: Błąd składni - haskell, stos kiks

Haskell: Błąd składni - haskell, stos kiks

Używam stosu Haskella.

module Len () where

my_nthele :: String -> Integer -> Char
my_nthele [] n = ""
my_nthele (x:xs) n  | n == 0 = x
| otherwise = my_nthele xs (n-1)

Interpreter Haskell pokazuje "src / Len.hs: 5: 1: error: błąd parsowania (ewentualnie nieprawidłowe wcięcie lub niedopasowane nawiasy) "

Nie mam pojęcia o tym, co jest nie tak.

Odpowiedzi:

2 dla odpowiedzi № 1

The Składnia literałów znaków wskazuje, że potrzebujesz czegoś pomiędzy pojedynczymi cudzysłowami:

2.6 Literały znaków i ciągów

char  →   "(graphic|space|escape⟨&⟩)" [remark: heavily simplified]

Literały znaków są zapisywane między pojedynczymi cudzysłowami, tak jak w "a"

W związku z tym, "" nie jest prawidłową składnią dla postaci, jak powinno być? Nie ma na początku postaci. Typ Char nie zawiera pojęcia nie będącego postacią, tak jak Int nie zawiera pojęcia nieistniejącego.

Właśnie to Maybe jest dla:

my_nthele :: String -> Integer -> Maybe Char
my_nthele [] n = Nothing
my_nthele (x:xs) n  | n == 0 = Just x
| otherwise = my_nthele xs (n-1)

Przy okazji, jako ćwiczenie, postaraj się, aby twoja funkcja była bardziej ogólna, tak aby można było z niej korzystać my_nthele [1..10] 3 == Just 4. To nie jest trudne, ale baw się dobrze Maybe.