|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
||||||
Применение типов20.12.2015, 10:32. Показов 4051. Ответов 67
Пытаюсь перейти от Prolog к Haskel.
Надо сделать вычисление арифметического выражения. Пишу рекурсивную программу, аналогичную Прологовской. Поскольку в списке Haskel, в отличие от Пролога, все элементы должны быть одного типа, применяю тип [String]. Приходится преобразовывать аргументы к численному представлению, а результат вычисления – обратно в символьное. Компилятор не пропускает. Что-то не правильно с объявлением типов или это методическая ошибка?
0
|
||||||
| 20.12.2015, 10:32 | |
|
Ответы с готовыми решениями:
67
Применение обнуляемых типов в C# Применение RAW типов |
|
Антикодер
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
|
|
| 20.12.2015, 14:45 | |
|
не хотелось заливать в сыром виде... но раз уж такая пьянка:
axt-edsl-epsi-haskell Там единственный исходник src/Parsing.hs Собственно материалы(функции) взяты из статьи, на которую я давал ссылку и из курсов на edX. Что самое интересное, статья вышла в 2007 года, а курсы edX проходят в конце 2015 года, детально не разбирался, но помоему за 8 лет парсер Эрика почти не изменился... Надеюсь через месяц у проекта будет более приличный вид...
1
|
|
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 20.12.2015, 16:09 [ТС] | |
|
calc "23-5*(6-(10+5)+10)-20+5"
"20" По-прежнему Добавлено через 8 минут Какой замечательный этот Haskell! Люди статьи про парсеры пишут, проекты делают. Есть чем заняться! А на примитивном Прологе любой толковый студент пишет лексический анализатор за 5 минут, а парсер арифметических выражений в лабораторной работе делает.
0
|
|
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 20.12.2015, 16:22 [ТС] | |
|
Я смотрю, Хаскель располагает к глубокомыслию.
По моей программе только никто не может ничего конкретного сказать. Там всего 9 строк.
0
|
|
|
Модератор
|
||
| 20.12.2015, 16:31 | ||
|
Применение типов Т.е. хотя бы начало учебника прочитать надо.
0
|
||
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 20.12.2015, 17:58 [ТС] | |
|
Кто бы мне продемонстрировал среднее знание языка Haskel.
0
|
|
|
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
|
||||||||||||||||
| 20.12.2015, 20:22 | ||||||||||||||||
|
Посмотрел я на исходный код, и понял. Мы слишком усложняем. Там же только четыре действия и нет скобочек! Зачем мудрить.
0
|
||||||||||||||||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|
| 20.12.2015, 20:35 | |
|
Araneo, а это http://ideone.com/ZIJlvf как трактовать?
0
|
|
|
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
|
||||||
| 20.12.2015, 21:05 | ||||||
|
Как мою глупость, грешен.
)) и даже понял в чём накосячил. Чай попью, придумаю как исправить.Добавлено через 22 минуты
0
|
||||||
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 20.12.2015, 21:22 [ТС] | |
|
Предыдущий Ваш пример хоть и неправильно, но работал.
А второй вариант совсем непонятен - что такое Bool в начале объявления? Добавлено через 2 минуты Тут же надо дерево строить, чтобы приоритет операций учитывать. А у Вас просто последовательное выполнение операций.
0
|
|
|
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
|
||||||
| 20.12.2015, 21:42 | ||||||
|
Странно, вот так работает.
> calc "-2*3+3*2+2/2" 1.0 Bool - тип логических переменных. По поводу дерева, а зачем его строить. В данном случае оно лишнее. Добавлено через 9 минут KolodeznyDiver, я сказал не видели )))
0
|
||||||
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 20.12.2015, 21:55 [ТС] | |
|
Подтверждаю, работает. Осталось скобки добавить.
Хотя и здесь ничего не понятно.
0
|
|
|
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
|
|
| 20.12.2015, 21:56 | |
|
KolodeznyDiver, сейчас это уже вроде не нужно, работает и так, а вот если буду добавлять скобочки, то безусловно нужно будет делать как ты сказал.
0
|
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|
| 20.12.2015, 22:09 | |
|
0
|
|
|
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
|
|
| 20.12.2015, 22:11 | |
|
pycture, боюсь что нет
))
0
|
|
|
2 / 2 / 0
Регистрация: 01.08.2015
Сообщений: 46
|
|
| 20.12.2015, 22:49 [ТС] | |
|
А почему нельзя, встретив скобку,
запустить рекурсивно parse с этого места, ограничив поиск закрывающей скобкой?
0
|
|
|
Супер-модератор
|
||||||
| 21.12.2015, 11:08 | ||||||
|
Ндааа... У меня было еще две довольно подлых ошибки. Выкладываю окончательный вариант:
KolodeznyDiver, ошибки были чисто алгоритмические: 1) при выполнении алг. операции удалялся только один операнд из стека операндов (а нужно - два); 2) при возможности выполнить операцию с более высоким приоритетом терялась проверка возможности выполнить текущую операцию. АТД мне бы здесь не помогли...
1
|
||||||
| 21.12.2015, 11:08 | |
|
Применение null-совместимых типов, проверка корня Чтение и запись типов, массив типов и List<> данных в файл Создать массивы разных типов(3 типов), вывести их на экран Не требуется приведение типов при умножении типов Byte Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе.
Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I
Обработка содержит реквизиты:
-. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|