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 № 1The 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
.