Синтаксис Haskell в контексте Xmonad?

Приветствую, друзья Хабравчане!


Давно использую Xmonad, но конфиги могу делать только вырезками из примеров. Шаг в сторону — и всё перестаёт работать. Изучение Haskell исключительно ради использования его в Xmonad не оправдывается, а менять Xmonad на что-то другое тоже не хотелось бы.


Может кто-нибудь кратко рассказать об основах синтаксиса Haskell применительно к конфигурированию Xmonad? Если кратко не получится, то можно и статью на Хабр.
  • Вопрос задан
  • 3516 просмотров
Пригласить эксперта
Ответы на вопрос 5
laughedelic
@laughedelic
Может быть вот это: Как питонистам читать Haskell поможет? Хотя рекомендую лучше почитать начало Learn you a Haskell for a great good – в начале как раз синтаксис объясняется. Есть перевод.
Ответ написан
bagyr
@bagyr
В общем, главное в конфиге:
main = do
xmonad $ defaultConfig {}

Как правильные опенсорсники, идем в исходники: xmonad.org/xmonad-docs/xmonad/src/XMonad-Config.html
defaultConfig = XConfig {}
Ищем XConfig: xmonad.org/xmonad-docs/xmonad/XMonad-Core.html#t:XConfig
Видим, что это data (можно прочитать про это в любой книге по хаскеллю) и все конструкторы, про восклицательный знак написано, например, здесь.

Более конкретные вопросы можно в irc или на арчефорум, там люди вплоть до разрабов сидят.
Ответ написан
@YourChief
хаскель простой, лучше выучи его и тебе откроется программирование с новой стороны. функциональные языки намного красивее императивных
Ответ написан
JagaJaga
@JagaJaga
В xmonad используются, в основном, простые и базовые вещи хаскеля. Пара вечеров изучения этого языка, и вы все поймете.
Ответ написан
Комментировать
@potan
Функциональный программист
Haskell похож на стандартную математическую запись. Многое можно понять просто вспомнив школьные уроки матана :-).
Функции задаются как набор записей:
имя образец_аргументов | условие = вычисление значения для этого образца.
Все имена обычных функций и других величин пишутся с маленькой буквы или знаками препинания не начинающимися с ':'. С большой буквы или с ':' пишутся конструкторы.
: - конструктор списка. x:y:[] - то же самое, что [x,y].
Все элементы списка должны иметь один тип.
В образцах можно "вызывать" конструкторы, но не функции. Имя с маленькой буквы в образце порождает новую величину, которая будет связана с этим именем. То есть образец (x:y) сопоставится с непустым списком, при этом голова списка попадет в "переменную" x, а остаток списка - в y.
По моему этого должно хватить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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