|
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
|
||||||
Haskell и -fno-warn-type-defaults29.12.2014, 14:32. Показов 3708. Ответов 34
Метки нет (Все метки)
Недавно начал изучать Haskell, пользуюсь связкой emacs + haskell-mode + company-ghc + shm.
В Dispersion.cabal прописаны флаги: -O2 -Wall Возникла следующая ситуация, которая не дает мне покоя : допустим, я пишу такой простой код:
Как я понял здесь имеется ввиду, что Haskell будет использовать тип Integer по умолчанию или что-то типа того. Такие предупреждения немного поднадоели, как решить проблему? Нашел 2 способа: 1) Прописать явно типы ==> скрин2 2) Использовать флаг -fno-warn-type-defaults ==> скрин3 2 Вопроса: Как правильно бороться с такими надоедливыми предупреждениями, 1-м способом или 2-м? Куда лучше прописывать флаги, в Dispersion.cabal или все-таки в каждый модуль отдельно?
0
|
||||||
| 29.12.2014, 14:32 | |
|
Ответы с готовыми решениями:
34
Место ФП и Haskell в компьютерной индустрии (Для чего он нужен, этот Haskell?) Warning: return type defaults to ‘int’ Что значит этот варнинг? |
|
Модератор
|
||||||
| 09.01.2015, 14:36 | ||||||
|
smoke853, Вроде, сделал как Вы сказали. Чтобы поставить ghc-mod пришлось опять переустанавливать ghc ("cabal hell", чтоб его). Отличия: emacs у меня х32, потому что такая винда. emacs понадобилось указывать в PATH, иначе на этапе curl -L http://git.io/epre | sh ругается что emacs не найден и нельзя отбайткодить.
Вроде - бы, остальное тоже, но в результате и даже не было подсветки в файлах hs. Опять же "И вот эту папку нужно скопировать в .emacs.d" - содержимое папки в уорень .emacs.d или папку elisp внутрь папки .emacs.d ? Дописал в .emacs
Копирование через ^C ^V наверное, тут можно настроить, но его изучать и изучать ... Практически, на чём прошлый раз начал, то и получил, не продвинулся. Мда, может под linux всё здорово, но под вин нет нормального IDE для Haskell. Не по теме: leksah требует Gtk2, хотя уже давно есть GTk3, и даже оно указано в описании пакета. И, вообще, при его установки сообщения дичайшие, типа начинает качать и ставить gtk3 той же версии что уже установлена и валится потому что "такой файл уже есть". Прискучили мне эти инсталляции в стиле слаки. Или вернусь к громоздкому эклипсу или обойдусь Notepad++ + WinGHCi + HLint. Жалко что контекстных подсказок нет нигде.
0
|
||||||
|
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
|
|||
| 09.01.2015, 14:47 [ТС] | |||
![]() Сейчас распишу, более подробно
1
|
|||
|
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 09.01.2015, 15:45 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Кликните здесь для просмотра всего текста
Начнем:
1) В переменных средах пользователя для smoke, в переменной Path, у меня добавлены:
2) ghc-mod через cabal установили. 3) Пока что, здесь:
4) Запускаем git bash и вводим:
5) Копируем эту папку сюда:
P.S. prelude-haskell мы не трогаем, это будет понятно далее. 7) Далее в папке personal создаем файл custom.el и в него копируем, то, что под спойлером. скрин3 Кликните здесь для просмотра всего текста
8)теперь открываем cmd.exe и вводим по-очереди:
9) Только теперь запускаем emacs, он установит все пакеты, нужно немного подождать. Скрин5 Закрываем его и снова открываем, теперь жмем C-x C-f и открываем файл Main.hs, затем жмем C-c C-z, он спросит пару вещей: Please answer yes or no, жмем y, далее Enter 3 раза. Скрин6 Все можно пользоваться После этих манипуляций в пути:
Так же у меня были установлены программы: unzip, wget, make Они устанавливаются сюда:
Вроде все, надеюсь я ничего не забыл, как видно все легко и просто
2
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
|
|||||||||||
| 09.01.2015, 15:54 [ТС] | |||||||||||
|
в 4 скрине ошибочка, не ту папку заскринил, вообщем structured-haskell-mode копируется сюда:
2
|
|||||||||||
| 09.01.2015, 15:59 | |
|
Не по теме: Такой фанатизм как не плюсовать!
0
|
|
|
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
|
||||||
| 09.01.2015, 16:20 [ТС] | ||||||
|
Не по теме: да какой там фанатизм :) Я еще новичок в emacs'e, иначе не пользовался бы всякими Prelude, а свой собственный конфиг бы запилил :) Добавлено через 13 минут И в 3-м скрине имеется ввиду папка:
1
|
||||||
|
Модератор
|
|
| 09.01.2015, 17:13 | |
|
О! Теперь чёто заработало! Наверно, молитва БГ помогла.
Пока не понял как компилировать и можно ли запускать в качестве консоли используя фрейм emacs (надо make к каждому файлу писать? и вызывать меню\tools\compile ?). Всё равно, огромное спасибо.
0
|
|
|
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
|
|
| 09.01.2015, 17:36 [ТС] | |
|
Чтобы скомпилировать жмем C-c C-c либо C-c c и выбираем из списка, что хотим сделать, ну там update, configure и т.д.
После компиляции, .exe можно запустить как обычно через cmd.exe, либо в emacs'e нажать C-x m, это запустит eshell и в нем запустить .exe. Есть и простой shell, эмуляция cmd.exe: C-x M-m, но нужно настраивать emacs под cp1251 кодировку. В eshell'e есть один минус, или я не разобрался, вообщем если используем print или putStrLn с кирилицей будут цифры вместо букв. В линуксе кстати все норм, а вот в винде я полагаю из-за кодировки опять таки. Так же можно не компилировать а просто загружать в ghci, с помощью C-c C-l, это комбинация по сути делает и load, а потом reload, ну можно и руками ввести :r. Ну и после того как нажали C-c C-l, можно ввести :main, чтобы вывести результат main'a. Чтобы проверить обновления пакетов в emacs, жмем M-x и вводим list-packages, жмем Enter, появляется список, жмем shift+u, далее x, потом y и т.д. ну там подсказки будут, на вопрос хотите ли удалить старые пакеты нажимаем y.
1
|
|
|
Модератор
|
||
| 09.01.2015, 17:47 | ||
|
Но, это, по любому не emacs. Под виндой надо на две стороны кодировать: что в консоль -866, что в окна - 1251.
0
|
||
|
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
|
|
| 09.01.2015, 18:06 [ТС] | |
|
Кстати в линуксе файл как раз в UTF-8, а винде судя по всему кодировка не определена.
Вот 2 скрина. P.S. все равно редко пользуюсь кириллицей ![]() Хотя нет, в винде тоже файл в UTF-8
0
|
|
|
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
|
||
| 09.01.2015, 18:42 [ТС] | ||
|
По поводу make, не знаю никогда не пользовался. structured-haskell-mode исключение, его можно было поставить прописав shm в prelude-require-packages в custom.el и emacs бы его поставил сам, но я так делал и у меня не заработало. Поэтому ставил вручную как и показано на офф страничке. По поводу Tools -> Compile, тоже никогда не пользовался не знаю даже для чего это нужно Может это вообще нужно, чтобы компилировать какие то emacs'овские штуки Вообщем в emacs'e столько всего, все и не запомнить. Также, я вам рекомендую посмотреть исходники на офф страничках prelude, haskell-mode, shm. Посмотреть какие-там хоткеи используются , посмотреть, что я изменил в конфиге. И уже потом под себя настраивать и расширять конфиг.
1
|
||
| 10.01.2015, 15:35 | |
|
Не по теме: Возюсь с emacs. Вы правы. Заставить его отображать в консоли *haskell* текст в кодировке 866 (кодировка в которой отображается текст в консольных окнах (по линуксоидному в терминалах)) не удаётся. В нижней строке окна консоли, левее красного крестика, можно нажимать правую кнопку мыши и пытаться вводить всякие cp866 - но толку от этого никакого. А попытки что ни будь вставить в его конфиги по советам из интернета, обычно приводит к пропаданию всех настроек или какой ни будь двойной перекодировки исходного файла без спроса.
0
|
|
| 10.01.2015, 16:04 [ТС] | |
|
Не по теме: Ну да, я когда первый раз открыл emacs вообще все было непривычно. А теперь мне не привычно пользоваться стрелочками :) Другое дело C-f - вперед, C-b - назад, C-p - вверх, C-n - вниз и их комбинации да еще и плюс smartparens для lisp'ов.
0
|
|
| 21.01.2015, 08:24 | |
|
0
|
|
| 21.01.2015, 08:24 | |
|
Помогаю со студенческими работами здесь
35
радио пульт лебёдки Warn - ищу протокол обмена UEFI defaults have been loaded
IntelliJ IDEA, выдает ошибку: [main] WARN io.netty.util.internal.ThreadLocalRandom, как починить? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|