Pytania otagowane jako ghc

Glasgow Haskell Compiler to najnowocześniejszy kompilator typu open source i interaktywne środowisko dla języka funkcjonalnego Haskell. Użyj tego tagu w przypadku pytań dotyczących GHC, a nie ogólnie Haskell, ponieważ prawie wszyscy będą go używać, chyba że określono inaczej.

1
Przechodniość autospecjalizacji w GHC
Z dokumentacji GHC 7.6: [T] często często nie potrzebujesz pragmy SPECJALIZACJI. Podczas kompilacji modułu M optymalizator GHC (z -O) automatycznie uwzględnia każdą przeciążoną funkcję najwyższego poziomu zadeklarowaną w M i specjalizuje ją dla różnych typów, w których jest wywoływany w M. Optymalizator bierze również pod uwagę każdą importowaną funkcję przeciążenia …
392 haskell  ghc 

2
Techniki śledzenia ograniczeń
Oto scenariusz: napisałem trochę kodu z podpisem typu, a skargi GHC nie mogły wydedukować x ~ y dla niektórych xi y. Zwykle możesz rzucić GHC kość i po prostu dodać izomorfizm do ograniczeń funkcji, ale jest to zły pomysł z kilku powodów: Nie podkreśla zrozumienia kodu. Możesz skończyć z 5 …
322 haskell  constraints  ghc 

8
Do czego służy słowo kluczowe `forall` w Haskell / GHC?
Zaczynam rozumieć, w jaki sposób forallsłowo kluczowe jest używane w tak zwanych „typach egzystencjalnych”, takich jak: data ShowBox = forall s. Show s => SB s Jest to jednak tylko podzbiór tego, w jaki sposób foralljest używany i po prostu nie mogę skupić się na jego użyciu w takich rzeczach: …
312 haskell  syntax  types  ghc  forall 


2
Kiedy właściwe jest ustawienie -XAllowAmbiguousTypes?
Niedawno opublikowałem pytanie dotyczące syntactic-2.0 dotyczące definicji share. Pracowałem w GHC 7.6 : {-# LANGUAGE GADTs, TypeOperators, FlexibleContexts #-} import Data.Syntactic import Data.Syntactic.Sugar.BindingT data Let a where Let :: Let (a :-> (a -> b) :-> Full b) share :: (Let :<: sup, sup ~ Domain b, sup ~ Domain …
212 haskell  ghc 

4
Odczytywanie rdzenia GHC
Rdzeń jest językiem pośrednim GHC. Czytanie rdzenia może pomóc ci lepiej zrozumieć wydajność twojego programu. Ktoś poprosił mnie o dokumentację lub samouczki na temat czytania rdzenia, ale nie mogłem wiele znaleźć. Jaka dokumentacja jest dostępna do odczytu GHC Core? Oto, co znalazłem do tej pory: Napisz Haskell tak szybko, jak …

3
Jakich optymalizacji można oczekiwać, aby GHC działał niezawodnie?
GHC ma wiele optymalizacji, które może wykonać, ale nie wiem, jakie są one wszystkie, ani jak prawdopodobne jest ich wykonanie i w jakich okolicznościach. Moje pytanie brzmi: jakich przekształceń mogę się spodziewać za każdym razem, czy prawie tak? Jeśli często patrzę na fragment kodu, który będzie często wykonywany (oceniany), a …

1
Specjalizacja z ograniczeniami
Mam problemy ze skonfigurowaniem GHC do specjalizacji funkcji z ograniczeniem klasy. Mam minimalny przykład mój problem tutaj: Foo.hs i Main.hs . Te dwa pliki są kompilowane (GHC 7.6.2 ghc -O3 Main) i uruchamiane. UWAGA: Foo.hs jest naprawdę okrojona. Jeśli chcesz zobaczyć, dlatego też konieczne jest ograniczenie, można zobaczyć trochę więcej …
156 haskell  ghc 

6
Dlaczego GHC jest tak duży / duży?
Czy jest prosta odpowiedź: dlaczego GHC jest tak duży? OCaml: 2 MB Python: 15 MB SBCL: 9 MB OpenJRE - 26 MB GHC: 113 MB Nie interesuje się ewangelizacją: „Dlaczego nie powinienem przejmować się rozmiarem, jeśli Haskell jest właściwym narzędziem”; to jest kwestia techniczna.
147 haskell  ghc 

2
Czy GHC-mod musi używać pełnych nazw typów?
Próbuję użyć ghc-modwtyczki vim do sprawdzania typu / składni itp. Jednak odkryłem, że ghc-modzawsze używa pełnych ścieżek typów w komunikatach o błędach, na przykład: test.hs|71 col 13 error| Couldn't match type ‘Data.Text.Internal.Text’ || with ‘[GHC.Types.Char]’ || Expected type: containers-0.5.6.2:Data.Map.Base.Map || [GHC.Types.Char] || ([(integer-gmp-1.0.0.0:GHC.Integer.Type.Integer, || integer-gmp-1.0.0.0:GHC.Integer.Type.Integer)], || containers-0.5.6.2:Data.Set.Base.Set || integer-gmp-1.0.0.0:GHC.Integer.Type.Integer) || …
143 haskell  ghc  ghc-mod 

5
Skrócenie czasu przerwy w usuwaniu elementów bezużytecznych w programie Haskell
Opracowujemy program, który odbiera i przekazuje dalej „wiadomości”, zachowując tymczasową historię tych wiadomości, aby na żądanie mógł przekazać historię wiadomości. Wiadomości są identyfikowane numerycznie, zwykle mają rozmiar około 1 kilobajta i musimy przechowywać setki tysięcy takich wiadomości. Chcemy zoptymalizować ten program pod kątem opóźnienia: czas między wysłaniem a odebraniem wiadomości …


2
Ślad pamięciowy typów danych Haskell
Jak mogę znaleźć rzeczywistą ilość pamięci wymaganej do przechowywania wartości pewnego typu danych w Haskell (głównie z GHC)? Czy można to ocenić w czasie wykonywania (np. W GHCi), czy też można oszacować zapotrzebowanie na pamięć złożonego typu danych na podstawie jego komponentów? Ogólnie rzecz biorąc, jeśli znane są wymagania dotyczące …


4
Kiedy zapamiętywanie jest automatyczne w GHC Haskell?
Nie mogę zrozumieć, dlaczego m1 najwyraźniej jest zapamiętywany, podczas gdy m2 nie znajduje się w następującym: m1 = ((filter odd [1..]) !!) m2 n = ((filter odd [1..]) !! n) m1 10000000 zajmuje około 1,5 sekundy przy pierwszym połączeniu i ułamek tego czasu przy kolejnych (przypuszczalnie buforuje listę), natomiast m2 …
106 haskell  ghc  memoization 

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.