Parsec3 траблы

Aug 01, 2008 19:04

3-й parsec, как известно, построен для работы с Data.ByteString, что должно неимоверно поднять скорость парсинга, по сравнению с обычным строковым.

Посмотрим, так ли это на самом деле )

parsec, haskell, программирование, вопрос

Leave a comment

Comments 6

thesz August 1 2008, 15:33:16 UTC
По идее, должны срабатывать.

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

The "[2]" means that the rule is active in Phase 2 and subsequent phases. The inverse notation "[~2]" is also accepted, meaning that the rule is active up to, but not including, Phase 2.

http://www.haskell.org/ghc/docs/6.8.2/html/users_guide/rewrite-rules.html

Reply

lomeo August 1 2008, 16:01:46 UTC
Указывал 1,2. На самом деле, указание это только ограничение, как я понял - мне бы наоборот.

Reply


deni_ok August 1 2008, 16:34:00 UTC
Спросил бы в ru_declarative, может кто ещё откликнется...

Reply

lomeo August 1 2008, 16:44:55 UTC
ок

Reply


virkony August 20 2008, 08:36:37 UTC
может {-# NOINLINE [~1] satisfy #-} (что б не заинлайнилось раньше чем твои правила заметят его)?

Reply

lomeo August 20 2008, 09:01:45 UTC
Там проблема в том, что digit не инлайнится. Вчера увидел по -ddump-simpl-iterations.

Написал свой

{-# INLINE myDigit #-}
myDigit :: Parsec BS.ByteString () Char
myDigit = satisfy isDigit -- "digit"

так инлайнится, а заменю () на u - нет. Имеется в виду тип

myDigit :: Parsec BS.ByteString u Char

Reply


Leave a comment

Up