ja przypadkowo odkrył, że po to doskonale kompilacji kodu:Dlaczego klasy mogą być używane jako parametry typu i po co?
class SomeClass a
someValue :: Maybe (SomeClass a)
someValue = undefined
jestem przyzwyczajony tylko do oglądania zajęcia z ograniczeniami typu, więc nie rozumiem, dlaczego ten kod typechecks i co jest celem używając klas w ten sposób.
Jestem na GHC 7.6.2.
Czy masz włączone rozszerzenia GHC? Przy włączonych rodzajach ograniczeń oczekuję, że pojawi się niezgodność rodzajowa, tj. 'Maybe :: * -> *' vs 'SomeClass :: * -> Constraint'. Klasy i typy dzielą tę samą przestrzeń nazw, jeśli pamięć mi służy, a to jest w najlepszym wypadku błąd, więc nie jestem pewien, dlaczego byłaby akceptowana przez kompilator. –
@ C.A.McCann Nr Brak. Po prostu zwykłe 'runghc' pliku z zawartością jak w pytaniu. –
Z ciekawości, co się stanie, jeśli zastąpisz słowo "undefined'" słowem "Nic"? –