Вместо запроса всех расширений GHC укажите, какие из них используются, используя механизм прагмы LANGUAGE
:
{-# LANGUAGE ParallelListComp #-}
xy = [ x+y | x <- [1, 2, 3, 4] | y <- [5, 6, 7, 8] ]
Я предполагаю, что оба a
и
b
читают из списка на
В то же время вызывает проблемы здесь ...? Так,
если расширения Глазго являются единственными
средства для поддержки этой конструкции это
чаще генерировать список
иначе или просто предположим, что
расширения будут доступны?
Допускается параллельная итерация по одному и тому же списку. Проблема в том, что параллельные понимания не определены в стандарте Haskell 98. Их можно легко смоделировать с помощью zip
:
xy = [x+y | (x,y) <- zip [1, 2, 3, 4] [5, 6, 7, 8]]
Сами расширения неплохие - большая часть стандартной библиотеки использует расширения того или иного рода. Многие рассматриваются для включения в Haskell ', следующую итерацию стандарта Haskell. Некоторые расширения, такие как GADT, обычно используются в пользовательских библиотеках. Другие, такие как шаблоны или несвязные экземпляры, вероятно, не очень хорошая идея, если вы действительно не знаете, что делаете.
Любое расширение, указанное на вики-странице HaskellExtensions с поддержкой двух или более компиляторов, вероятно, безопасно для использования.