Путешествия мурзилки.

May 14, 2012 21:09

Ранее, вскользь, упоминал о том что взялся за haskell. Приятный язык, очень.
На данный момент чувства целостности и полноты восприятия "всегомонадного" нет. Дело опыта.

Простенькая задачка - нужно разобрать файл с следующим форматом данных, описанном в псевдо бнф нотации:

-- data ::= usefulData data | invalidData data
-- usefulData ::= keyAndId value
-- ( Read more... )

штрихи-штрихи, fp, parsec, haskell

Leave a comment

Comments 8

udpn May 14 2012, 17:38:16 UTC
>> На данный момент чувства целостности и полноты восприятия "всегомонадного" нет.

А там нет целостности и полноты почти нигде. Для этого нужно взять хардкорную версию, например, Agda. Полагаю, ты уже заметил, что Haskell несколько неблагосклонен к логическиим ошибкам? Agda неблагосклонна на порядок сильнее. Если писать правильно, то компиляция программы на этом языке эквивалентна её корректности.

По поводу кода:
1) лучше после do делать перевод строки, так выглядит красивее
2) в этой задаче, кажется, не нужны монады и do-нотация. оно должно решаться и с помощью более простых аппликативов. См. по ссылке главу "Applicative parsing by example".

Reply

udpn May 14 2012, 17:44:03 UTC
Ну и да, на Parsec дело не останавливается. Либа довольно популярная, но старая. Тот же boost::spirit в С++ позволяет как парсить, так и сериализовать (Qi и Karma соотв-но). Почти из одинакового синтаксиса. Есть более свежие наработки: http://nponeccop.livejournal.com/263285.html .

Reply

sassa_nf May 14 2012, 19:32:22 UTC
Что-то не видно, чем апликативы принципиально лучше в этой задаче. Или дело просто в синтаксисе?

Reply

udpn May 15 2012, 06:38:59 UTC
Да, в синтаксисе. Он более lightweight, и reasoning в аппликативах намного легче (сравни аксиомы, например).

Reply


Leave a comment

Up