Mam pytanie: Jak mogę przesłonić metodę show dla String lub Char? Dzięki.Metoda przesłonięcia show dla String/Char w Haskell
Odpowiedz
Jeśli chcesz to zrobić, robisz to źle.
Dla bardziej technicznego powodu, patrz my answer na poprzednie pytanie.
Ty naprawdę powinien być używany zarówno własne a -> String
funkcji (ewentualnie za pośrednictwem własnego typu klasy) lub użyć ładnego drukowania bibliotekę dla bardziej szczegółowych wyjść (z których niektóre mają już wbudowany Pretty
klasę).
Ponieważ ludzie wydają się podoba mój komentarz, to jest tutaj jako odpowiedź:
Jeśli chcesz reimplement zajęcia typu na istniejących typów, można owinąć je w newtype
typu -declared. Pozwala to na zdefiniowanie własnych implementacji bez rzeczywistego narzutu w czasie wykonywania (ponieważ newtype
jest izomorficzny w stosunku do oryginalnego typu, nie ma faktycznego boksowania w środowisku wykonawczym).
Może to wyglądać mniej więcej tak:
newtype MyChar = MyChar Char
instance Show MyChar where
show (MyChar c) = "head \"" ++ c : "\""
Możesz użyć tego owijając Char
S z MyChar
, tak:
print $ fmap MyChar "test"
To będzie wydrukować
[head "t",head "e",head "s",head "t"]
Możesz także zdefiniować showList, a następnie listy MyChar będą miały również niestandardowe formatowanie. W rzeczywistości dlatego wyświetlanie list znaków ([Char]) zachowuje się inaczej niż pokazywanie innych list ([a]). – sdcvvc
- 1. Haskell: Show spieprzone?
- 2. Metoda przesłonięcia wewnątrz widgetu jquery
- 3. Implementacja "show" dla funkcji
- 4. ja otrzymuję błąd "metoda show (FragmentManager, String)"
- 5. Dlaczego show nie jest traktowane jako konwersja w haskell?
- 6. Sprawdź, czy typ jest wystąpieniem programu Show w programie Haskell?
- 7. Jak wyłączyć ikony "przesłonięcia" w Intellijlu?
- 8. Niezdefiniowana metoda dla `before_filter '
- 9. Wprowadzanie funkcji bez przesłonięcia
- 10. Zapisywanie wykresów w Haskell
- 11. Parsowanie w Haskell dla prostego interpretatora
- 12. przesłonięcia ustawiającej i getter musi być zmienione
- 13. czarne tło podczas przesłonięcia drawRect w UIScrollView
- 14. Klasa "Zippable" dla haskell?
- 15. Scala: jaki jest cel "przesłonięcia"
- 16. AngularJS: ng-show dla najwyższej wartości indeksu $ w powtórzeniu ng
- 17. ng-show dla konkretnego elementu w NG-repeat
- 18. CDT w hover show documentation
- 19. Zniknij w jQuery div show
- 20. Animacje w AngularJS ng-show
- 21. Czy można używać MRO w celu przesłonięcia mixina?
- 22. Uzyskaj opcje uruchamiania bez przesłonięcia. Nie FinishLaunchingWithOptions:
- 23. Funktor/instancje aplikacyjne dla stanu w Haskell
- 24. Alias dla argumentów funkcji w Haskell
- 25. Kolorowe powłoki dla Haskell w systemie Windows?
- 26. Identyfikacja bieżącego HEC dla funkcji w Haskell
- 27. opcjonalne argumenty w Haskell
- 28. Dobra komutacyjne dla operatorów Haskell?
- 29. Metoda getWindow() jest niezdefiniowana dla typu AlertDialog.Builder
- 30. Metoda odpowiednik dla @InjectMocks
Czy istnieje powód, dla którego nie chcesz definiować innych funkcji typu "Char -> String' lub" String -> String'? Dlaczego chcesz zastąpić 'show'? – hammar
Myślę, że musisz zawinąć go w [nowy typ] (http://www.haskell.org/haskellwiki/Newtype) i zdefiniować opcję Pokaż dla tego typu. –