Вопросы с тегом «ghc»

Glasgow Haskell Compiler - это современный компилятор с открытым исходным кодом и интерактивная среда для функционального языка Haskell. Используйте этот тег для вопросов конкретно о GHC, а не о Haskell в целом, поскольку почти все будут использовать его, если не указано иное.

1
Транзитивность авто-специализации в GHC
Из документов для GHC 7.6: [Y] Вам часто даже не нужна прагма SPECIALIZE. При компиляции модуля M оптимизатор GHC (с -O) автоматически рассматривает каждую перегруженную функцию верхнего уровня, объявленную в M, и специализирует ее для различных типов, в которых она вызывается в M. Оптимизатор также учитывает каждую импортированную перегруженную функцию …
392 haskell  ghc 

2
Методы отслеживания ограничений
Вот сценарий: я написал некоторый код с сигнатурой типа, и жалобы GHC не смогли вывести x ~ y для некоторых xи y. Обычно вы можете бросить GHC кость и просто добавить изоморфизм в ограничения функции, но это плохая идея по нескольким причинам: Это не подчеркивает понимание кода. Вы можете получить …
322 haskell  constraints  ghc 

8
Что делает ключевое слово `forall` в Haskell / GHC?
Я начинаю понимать, как forallключевое слово используется в так называемых «экзистенциальных типах», например: data ShowBox = forall s. Show s => SB s Однако это только часть того, как forallэто используется, и я просто не могу сосредоточиться на его использовании в таких вещах: runST :: forall a. (forall s. ST …
312 haskell  syntax  types  ghc  forall 

4
Почему Haskell (GHC) так чертовски быстр?
Haskell (с GHCкомпилятором) работает намного быстрее, чем вы ожидаете . При правильном использовании он может приблизиться к языкам низкого уровня. (Любимая вещь для Haskellers - попытаться получить в пределах 5% от C (или даже побить его, но это означает, что вы используете неэффективную программу на C, поскольку GHC компилирует Haskell …

2
Когда -XAllowAmbiguousTypes подходит?
Недавно я опубликовал вопрос о синтаксической версии 2.0 относительно определения share. У меня было это работает в 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, …
212 haskell  ghc 

4
Чтение GHC Core
Ядро является промежуточным языком GHC. Чтение Core может помочь вам лучше понять производительность вашей программы. Кто-то попросил у меня документацию или учебные пособия по чтению Core, но я не мог найти много. Какая документация доступна для чтения GHC Core? Вот что я нашел до сих пор: Пишите на Haskell так …

3
Какую оптимизацию можно ожидать от GHC?
У GHC есть много оптимизаций, которые он может выполнить, но я не знаю, чем они все являются, и какова вероятность их выполнения и при каких обстоятельствах. Мой вопрос: какие преобразования я могу ожидать, чтобы они применялись каждый раз или почти так? Если я смотрю на фрагмент кода, который будет выполняться …

1
Специализация с ограничениями
У меня проблемы с получением GHC, чтобы специализировать функцию с ограничением класса. У меня есть минимальный пример моей проблемы здесь: Foo.hs и Main.hs . Два файла компилируются (GHC 7.6.2, ghc -O3 Main) и запускаются. ПРИМЕЧАНИЕ: Foo.hs действительно урезано. Если вы хотите понять, зачем нужно ограничение, вы можете увидеть немного больше …
156 haskell  ghc 

6
Почему GHC такой большой / большой?
Есть простой ответ: почему GHC такой большой? OCaml: 2 МБ Python: 15 МБ SBCL: 9 МБ OpenJRE - 26 МБ GHC: 113 МБ Не интересуется евангелизацией «Почему меня не волнует размер, если Haskell - правильный инструмент»; это технический вопрос.
147 haskell  ghc 

2
GHC-мод должен использовать полные имена для типов?
Я пытаюсь использовать ghc-modплагин vim для проверки типа / синтаксиса и т. Д. Однако я обнаружил, что ghc-modв сообщениях об ошибках всегда используются полные пути типов, например: 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 …
143 haskell  ghc  ghc-mod 

5
Сокращение времени паузы при сборке мусора в программе на Haskell
Мы разрабатываем программу, которая принимает и пересылает «сообщения», сохраняя при этом временную историю этих сообщений, чтобы она могла рассказать вам историю сообщений по запросу. Сообщения идентифицируются численно, обычно имеют размер около 1 килобайта, и нам необходимо хранить сотни тысяч таких сообщений. Мы хотим оптимизировать эту программу для задержки: время между …

2
Маленькая программа на Haskell, скомпилированная с помощью GHC, в огромный двоичный файл
Даже тривиально маленькие программы на Haskell превращаются в гигантские исполняемые файлы. Я написал небольшую программу, которая была скомпилирована (с помощью GHC) в двоичный файл размером более 7 МБ! Что может заставить даже небольшую программу на Haskell компилироваться в огромный двоичный файл? Что я могу сделать, чтобы уменьшить это?

2
Объем памяти типов данных Haskell
Как я могу найти фактический объем памяти, необходимый для хранения значения некоторого типа данных в Haskell (в основном с GHC)? Можно ли оценить его во время выполнения (например, в GHCi) или можно оценить потребности в памяти для составного типа данных по его компонентам? В общем, если требования к памяти типов …

1
Почему функция Haskell «ничего не делает», id, потребляет тонны памяти?
В Haskell есть функция идентификации, которая возвращает входные данные без изменений. Определение простое: id :: a -> a id x = x Итак, для удовольствия, это должно вывести 8: f = id id id id id id id id id id id id id id id id id id id …
112 haskell  ghc 

4
Когда мемоизация выполняется автоматически в GHC Haskell?
Я не могу понять, почему m1, по-видимому, мемоизирован, а m2 отсутствует в следующем: m1 = ((filter odd [1..]) !!) m2 n = ((filter odd [1..]) !! n) m1 10000000 занимает около 1,5 секунд при первом вызове и небольшую часть этого времени при последующих вызовах (предположительно, он кэширует список), тогда как …
106 haskell  ghc  memoization 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.