Co mówię jest to, że nie jest możliwe określenie:Dlaczego GHC Haskell nie obsługuje przeciążonych nazw parametrów rekordów?
data A = A {name :: String}
data B = B {name :: String}
wiem, że GHC tylko desugars to do prostych funkcji i idiomatyczne sposobem rozwiązania tego byłoby:
data A = A {aName :: String}
data B = B {bName :: String}
class Name a where
name :: a -> String
instance Name A where
name = aName
instance Name B where
name = bName
Po napisaniu tego, nie podoba mi się to tak bardzo ... czy ten typ literowania nie mógł być częścią procesu usuwania?
Przyszła mi do głowy myśl, kiedy pisałem kilka analiz JSON Aesona. Gdzie byłoby zbyt łatwo po prostu dla każdego typu danych musiałem napisać wszystko ręcznie (obecnie> 1k linii i liczenie). Posiadanie nazw takich jak name
lub po prostu value
w rekordzie danych nie jest rzadkością.
http://www.haskell.org/haskellwiki/Performance/Overloading wspomina, że przeciążenie funkcji wprowadza pewne obciążenie środowiska wykonawczego. Ale właściwie nie rozumiem, dlaczego kompilator nie byłby w stanie rozwiązać tego problemu podczas kompilacji i wewnętrznie nadawać im różne nazwy.
This SO question from 2012 więcej lub mniej państw historyczne powodów i punktów do wątku z roku 2006. Czy ostatnio coś się zmieniło?
Nawet gdyby nie było trochę czasu pracy, większość ludzi nie miałaby nic przeciwko, ponieważ większość kodu prawie nie jest krytyczna.
Czy jest jakieś ukryte rozszerzenie języka, które faktycznie pozwala na to? Znowu nie jestem pewien ... ale myślę, że Idris rzeczywiście to robi?
Pomyślnie: Czy ktoś mógłby dodać tag Idris do SO i to pytanie? Może ktoś z tej społeczności też mógłby się rozwinąć. – fho
Gratulacje, że jest to pierwsze pytanie zręcznie idris. Jeśli chcesz przeczytać więcej na ten temat, znajduje się strona [ghc wiki] (http://hackage.haskell.org/trac/ghc/wiki/Records) i [konwersacja na reddit] (http: // www.reddit.com/r/haskell/comments/kgd4g/the_records_problem_in_haskell_help_build_a/). – Davorak
Dzięki za linki. Dokumenty GHC nie wydają się mieć dobrej pozycji w wynikach Google. – fho