С Новым годом! Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
6 / 6 / 0
Регистрация: 11.07.2011
Сообщений: 122

Как вызвать функцию в командной строке ?

22.09.2015, 11:10. Показов 2929. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть функция listLength записанная в файле .hs вот ее код

Haskell
1
2
3
4
5
6
data List a = Nil
            | Cons a (List a)
 
 
listLength Nil = 0
listLength (Cons x xs) = 1 + listLength xs
Как теперь вызвать listLength из командной строки ? Непонятен синтаксис для вызова.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.09.2015, 11:10
Ответы с готовыми решениями:

Как вызвать конкретную функцию из командной строки матлаба если .m файл содержит несколько функций
Здравствуйте! Подскажите пожалуйста как вызвать конкретную функцию из командной строки матлаба если .m файл содержит несколько...

как вызвать msvcbuild из командной строки
доброе время суток пытаюсь скомпилировать luaJit. установил вижуал студио 2010. делаю все как в этой инструкции...

Вызвать функцию по клику по строке dbgrid
Есть dbgrid с кучей строк ФИО, как сделать чтобы кликнул на одну строку и вызвалась какая нибудь функция (открылось окно итд) с передачей...

9
97 / 78 / 12
Регистрация: 07.06.2015
Сообщений: 132
Записей в блоге: 12
22.09.2015, 11:59
Смотрите в сторону runhaskell
н-р:
Haskell
1
2
3
4
5
6
7
8
~/haskell $ cat datetime.hs
module Main where
 
import Data.Time
 
main = getCurrentTime >>= print
~/haskell $ runhaskell datetime.hs
2015-09-22 08:56:15.135553 UTC
Добавлено через 2 минуты
прочитать аргументы при вызовет можно вот так:
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
~/haskell $ runhaskell arg.hs 1 2 3 4 5 asdfasdf
The arguments are:
1
2
3
4
5
asdfasdf
~/haskell $ cat arg.hs
import System.Environment (getArgs)
 
main = do
   args <- getArgs
   putStrLn "The arguments are:"
   mapM_ putStrLn args
1
6 / 6 / 0
Регистрация: 11.07.2011
Сообщений: 122
22.09.2015, 12:31  [ТС]
loothood я пока нахожусь на стадии обучения (начальный этап).
Запускаю через командную строку ghci.
У вас я что-то так и не увидел как запускать функцию listLength

К пример когда я пишу в командной строке следующее

Prelude> listLength (Cons 5, [1,2,3,4,5])

выводится ошибка, что-то там с типами данных.

Вопрос: как правильно запускать listLength в командной строке,
чтобы она выводила длину списка.
0
 Аватар для Araneo
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
22.09.2015, 13:02
Лучший ответ Сообщение было отмечено foxis как решение

Решение

Я вам даже сказать могу что там не так... Вы на вход функции подали картеж, а она ждёт вашу реализацию списка.
попробуйте к примеру.
Haskell
1
> listLength (Cons 5 Nil)
или вот так, если вам интересно более чем один эллемент в списке.
Haskell
1
> listLength (Cons 3 (Cons 4 (Cons 5 Nil)))
Или вот так, если лень скобочки писать.
Haskell
1
> listLength $ Cons 3 $ Cons 4 $ Cons 5 Nil
2
6 / 6 / 0
Регистрация: 11.07.2011
Сообщений: 122
22.09.2015, 13:43  [ТС]
Спасибо большое, Araneo помогло, все работает.

Странно пример дан в учебнике, но нигде не сказано как данную функцию
правильно вызвать.
0
Модератор
 Аватар для Curry
5153 / 3466 / 536
Регистрация: 01.06.2013
Сообщений: 7,528
Записей в блоге: 9
22.09.2015, 13:51
Цитата Сообщение от foxis Посмотреть сообщение
Странно пример дан в учебнике, но нигде не сказано как данную функцию
правильно вызвать.
А что за учебник?
Есть подозрение, что в учебнике рассказывается как вызывать функции, и в ghci тоже. Только ранее рассматриваемой Вами задачки.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
22.09.2015, 14:00
Лучший ответ Сообщение было отмечено foxis как решение

Решение

Можно даже построить exe-файл, если скомпилировать код:

Haskell
1
2
3
4
5
6
7
8
data List a = Nil | Cons a (List a) deriving (Eq,Show,Read)
  
listLength Nil = 0
listLength (Cons x xs) = 1 + listLength xs
 
main = do
  stri <- getLine
  putStrLn $ show $ listLength (read stri :: List Int)
Миниатюры
Как вызвать функцию в командной строке ?  
2
6 / 6 / 0
Регистрация: 11.07.2011
Сообщений: 122
22.09.2015, 14:34  [ТС]
KolodeznyDiver, учебник называется "Yet Another Haskell Tutorial" автор Hal Daum .
Пример дан в разделе, где описываются рекурсивные типы данных (Recursive Datatypes).

Наиболее адекватные учебник в плане, отсутствия резких перескоков, которые остаются
без пояснения для новичков (вроде тех что описано в этой ветке), и впоследствии вызывают проблемы
с усвоением материала.

До этого пробовал начинать Real World Haskell там таких новых моментов, которые остаются без внимания автора очень много.


Ок, спасибо Catstail попробую. Ну вообще в основном пока запускаю .hs файлы из ghci.
0
Модератор
 Аватар для Curry
5153 / 3466 / 536
Регистрация: 01.06.2013
Сообщений: 7,528
Записей в блоге: 9
22.09.2015, 14:49
Цитата Сообщение от foxis Посмотреть сообщение
учебник называется "Yet Another Haskell Tutorial" автор Hal Daum
Посмотрел. Не буду ругать. Как пользоваться ghci и пр. там описывается.
У нас тут своя атмосфера целый FAQ есть со ссылками на учебники. В т.ч и на русском. Попробуйте, к примеру "О Haskell по-человечески". Автор, даже, кое где поблизости бегает.
1
6 / 6 / 0
Регистрация: 11.07.2011
Сообщений: 122
22.09.2015, 15:07  [ТС]
Спасибо большое, KolodeznyDiver, за информацию.

FAQ и "О Haskell по-человечески" , в следующий раз буду использовать в качестве справочной информации,
если будут возникать вопросы.

А в целом мне учебники нравятся тем, что там есть задачи по данной тематики,
с помощью которых можно по тренироваться и закрепить материал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.09.2015, 15:07
Помогаю со студенческими работами здесь

Как из командной строки Avidemux вызвать аудиофильтры?
Как из командной строки Avidemux вызвать аудиофильтры? В офиц.спиcке команд такой команды не нашел.

Как правильно вызвать функцию с указателем на другую функцию как параметр
Вот вариант: double f(double x) { ... } double k(double (*f)(double), double y) { ...

Как правильно передать вектор в функцию и вызвать эту функцию?
Здравствуйте, объясните как исправить ошибку. Возникает после for(), выдается, что размер polygon = 0. Вот так функции объявлены в классе: ...

Как в функцию main вызвать функцию из другого .c файла
Здравствуйте. Я написал программу, которая в функцию main вызывает функцию из другого .c файла, но выводит ошибку undefined reference to...

Как вы думаете, можно ли из основной ветки программы вызвать функцию, вложенную в другую функцию? Почему?
В языке Python можно внутри одной функции определять другую. Напишите программу по следующему описанию. В основной ветке программы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru