show
jest funkcja, która jest określona na funkcjach, które są członkami Show
typeclass (jeśli nie wiesz co to typeclass jest to trochę jak interfejs OOP).
Domyślnie funkcje nie są członkami typografii, więc nie możemy ich wydrukować.
mogliśmy uczynić go członkiem typeclass z
instance Show (a -> b) where
show f = "Unicorns!!"
ale tutaj możemy zrozumieć, dlaczego nie jest realizowany domyślnie. Nie ma prostej, oczywistej reprezentacji funkcji, a haskell nie chce zgadywać, a zatem nie ma instancji.
Jedyną "dopuszczalną" instancją byłaby taka, która faktycznie wypisuje funkcję, ale wymagałoby to rzeczywistej zmiany języka, tj. Byłaby podłączona do kompilatora, co po prostu nie jest tego warte w nielicznych przypadkach, w których może być przydatne.
Co więcej jest to nietrywialne zmiana kompilator, Haskell jest kompilowany, co oznacza różnicę między coś takiego f = g
i
f = g
są całkowicie stracił na niego. Ale na pewno chcesz tego w swojej reprezentacji funkcji. Z tego powodu będziesz musiał przeciągnąć ten ciąg przez cały program. To zdecydowanie nie jest to, czego chcesz w systemie binarnym.
Jeśli naprawdę chcesz wydrukować jednorożce !! choć czuję się swobodnie.
Jakiego "łańcucha" można się spodziewać do wykonania tej funkcji? –