Существует ли компилятор Haskell или препроцессор, который использует строгую оценку?

  header('Content-Type: application/json; charset=utf-8');
19
задан Zifre 15 June 2009 в 13:17
поделиться

7 ответов

Если у вас есть компилятор Haskell который использует строгое вычисление, он не компилирует Haskell. Ленивость Нестрогость - часть спецификации Haskell!

Однако есть альтернативы.

  • DDC - попытка создать явно ленивый вариант Haskell, который поддерживает такие вещи, как деструктивное обновление сохраняя при этом все остальное добро Haskell. Есть одна проблема: компилятор сейчас находится только в α-стадии, хотя кажется, что по крайней мере его можно использовать.

  • Создайте препроцессор, как это делали другие.

  • Научитесь использовать Haskell «правильно». Если вы можете упростить свой тестовый пример до чего-то, что будет доступно для всеобщего обозрения, вы можете опубликовать его в списке рассылки Haskell-Café , где люди могут очень помочь с вопросами такого рода, касающимися эффектов не- строгость.

16
ответ дан 30 November 2019 в 01:58
поделиться

There have been two attempts at strictly evaluating Haskell in the past:

But both were focused on sticking to Haskell's non-strict semantics but using a mostly-strict evaluation strategy, rather than actually changing the semantics, and neither ever really saw the light of day.

Edit: Martijn's suggestion of strict-plugin looks ideal for your purposes as it actually does what you want and the author is still active in the Haskell community, I'd forgotten about it.

12
ответ дан 30 November 2019 в 01:58
поделиться
8
ответ дан 30 November 2019 в 01:58
поделиться

Я бы предпочел не ставить постоянно! s и $! s по всей моей программе

You ' Вы делаете это неправильно, если вы так программируете Haskell :) Вам просто не нужно этого делать. Используйте GHC, используйте -O2, используйте строгие типы данных, когда это необходимо, используйте ленивые, когда это необходимо. Не думайте, что лень станет проблемой - это решение многих проблем.

17
ответ дан 30 November 2019 в 01:58
поделиться

Я чувствую твою боль. Моя самая большая PITA в моем повседневном программировании связана с ними ! @Как типичный программист на Haskell, насколько вы зависите от ленивого вычисления.

Но что нам действительно нужно, так это действительно хорошая книга о том, как работать с ленивым вычислением в реальном мире (который на самом деле не так уж отличается от академического мира, за исключением они просто не публикуют статью, и к нам приходят клиенты с ножами), которые должным образом охватят большинство вопросов, связанных с этим, и, что более важно, дадут нам интуитивное представление о том, что может взорвать нашу кучу, а что нет.

Я не думаю, что это что-то новое; Я уверен, что другие языки и архитектуры тоже прошли через это. Как же, в конце концов, первые программисты имели дело с аппаратными стеками и всем остальным? Не очень хорошо, держу пари.

Но что нам действительно нужно, так это действительно хорошая книга о том, как работать с ленивым оцениванием в реальном мире (который на самом деле не так уж отличается от академического мира, за исключением того, что они просто не публикуют статью, а у нас есть клиенты преследуют нас с ножами), которые должным образом охватят большинство связанных с этим вопросов и, что более важно, дадут нам интуитивное представление о том, что взорвет нашу кучу, а что нет.

Я не думаю, что это это новая вещь; Я уверен, что другие языки и архитектуры тоже прошли через это. Как же, в конце концов, первые программисты имели дело с аппаратными стеками и всем остальным? Не очень хорошо, держу пари.

Но что нам действительно нужно, так это действительно хорошая книга о том, как работать с ленивым оцениванием в реальном мире (который на самом деле не так уж отличается от академического мира, за исключением того, что они просто не публикуют статью, а у нас есть клиенты преследуют нас с ножами), которые должным образом охватят большинство связанных с этим вопросов и, что более важно, дадут нам интуитивное представление о том, что взорвет нашу кучу, а что нет.

Я не думаю, что это это новая вещь; Я уверен, что другие языки и архитектуры тоже прошли через это. Как же, в конце концов, первые программисты имели дело с аппаратными стеками и всем остальным? Не очень хорошо, держу пари.

и мы получаем клиентов, которые идут за нами с ножами), которые должным образом охватят большинство связанных с этим вопросов и, что более важно, дадут нам интуитивное представление о том, что взорвет нашу кучу, а что нет.

Я не знаю » не думаю, что это что-то новое; Я уверен, что другие языки и архитектуры тоже прошли через это. Как же, в конце концов, первые программисты имели дело с аппаратными стеками и всем остальным? Не очень хорошо, держу пари.

и мы получаем клиентов, которые идут за нами с ножами), которые должным образом охватят большинство связанных с этим вопросов и, что более важно, дадут нам интуитивное представление о том, что взорвет нашу кучу, а что нет.

Я не знаю » не думаю, что это что-то новое; Я уверен, что другие языки и архитектуры тоже прошли через это. Как же, в конце концов, первые программисты имели дело с аппаратными стеками и всем остальным? Не очень хорошо, держу пари.

7
ответ дан 30 November 2019 в 01:58
поделиться

I think that Jan-Willem Maessan's pH compiler is/was strict. The next closest is Robert Ennal's speculative evaluation fork for ghc 5. The spec_eval fork is not strict, but instead optimistically evaluates. I don't know if either of those are still current/usable/etc.

5
ответ дан 30 November 2019 в 01:58
поделиться

Использование nfdata и rnf повсюду не является решением, поскольку это означает многократное обращение к большим структурам, которые уже были оценены.

Вводная глава докторской диссертации Бена Липпмайера (о DDC) является лучшей критикой Хаскеля, которую я видел - в ней обсуждаются вопросы лени, деструктивного обновления, трансформации монад и т.д. В DDC есть лень, но вы должны запросить ее явно, и она считается эффектом, который отслеживается и управляется системой типов и эффектов DDC.

5
ответ дан 30 November 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: