Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241

Меню выбора!

15.03.2021, 23:32. Показов 2016. Ответов 15

Студворк — интернет-сервис помощи студентам
Как сделать примерно такое меню с выбором, которое бы возвращало обратно в main?
Haskell
1
2
3
4
5
6
7
8
9
10
main = do
    putStrLn "Hi"
    putStr "Введите H - для помощи!"
    x <- getChar 
    selectionMenu x
        case x of
        'H' -> "help"
 
 
help =   putStrLn "Список команд: "
Ну что-то на подобии цикла while с case.(Наверное стоит и дальше читать учебник, но больно хочется написать программку)
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2021, 23:32
Ответы с готовыми решениями:

После выбора пункта консольного меню программа завершает работу, а не возвращается к меню
После выбора пункта консольного меню программа завершает работу, а не возвращается к меню. Просмотрел уже все темы, вроде сделал как в...

Меню выбора
Как при загрузке странички вывести меню выбора? К примеру: 1 Статистика посещений 2 Статистика публикаций если...

Меню выбора
Помогите пожалуйста добавить в этот батник правило которое будет выводить предложение завершить роботу (завершить роботу: Y/N) если...

15
240 / 189 / 32
Регистрация: 02.07.2020
Сообщений: 142
16.03.2021, 02:20
Лучший ответ Сообщение было отмечено Egor2287678888 как решение

Решение

Цитата Сообщение от Egor2287678888 Посмотреть сообщение
Наверное стоит и дальше читать учебник
Без этого никак

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import System.IO
 
main = do
    hSetBuffering stdout NoBuffering
 
    putStrLn "Hi"
    putStrLn "Введите H - для помощи!"
    inputLoop
    putStrLn "Bye"
 
inputLoop :: IO ()
inputLoop = do
  putStr "> "
  x <- getLine
 
  case x of
    "H" -> do
      putStrLn "Список команд: "
      putStrLn "..."
      inputLoop
    "q" ->
      return ()
    "" ->
      return ()
    _ -> do
      putStrLn "Неизвестная команда"
      inputLoop
Заменил ввод с посимвольного на построчный (для завершения ввода нужно нажать Enter).
Без дополнительных телодвижений посимвольный ввод все равно получится не такой, как хотелось бы, да и для построчного лучше использовать специальную библиотеку
3
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241
16.03.2021, 17:13  [ТС]
У меня только мой VSC жалуется на эту строку:
Haskell
1
 "H" -> do
, конкретнее на стрелочку ->

Добавлено через 5 часов 14 минут
Не, всё ок
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
16.03.2021, 21:10
Чтобы научиться делать такие меню, возможно, стоит поизучать библиотеку brick:
Github → Jonathan Daugherty → Brick
Периодически перевожу руководство и заливаю сюда:
Gitlab → ALTron → Translations →github.com → jtdaugherty → brick
Сейчас, с помощью этой библиотеки, пытаюсь сделать консольную кнопку с поддержкой мыши.
Меню уже делал.
3
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241
16.03.2021, 21:19  [ТС]
Круто! Спасибо!
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
16.03.2021, 23:08
Когда до конца не изучены основные механизмы языка, базовые библиотеки, наверно не стоит сильно углубляться в создание интерфейса программы.
Получается первая, самая главная задача - освоить язык Haskell. Для этого не нужно делать меню.
Вторая второстепенная задача - научиться делать хороший интерфейс для консольного приложения.
Последняя задача требует понимания таких механизмов языка, как функторы, апликативные функторы, монады, монадные трансформеры, линзы.
2
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241
16.03.2021, 23:11  [ТС]
Это точно! Я это уже чувствую))
А вообще, как не запутаться в этом коде? Очень много строк и всё запутано)
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
16.03.2021, 23:28
В каком именно коде?

Спрашиваю, быстро пытаясь спрятать подальше свои проекты со спагетти кодом на Haskell

Ностальгически вспоминаю время, когда я работал на C++(2015 год), пытаясь разобраться в коде крупной системы учёта электроэнергии
0
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241
16.03.2021, 23:31  [ТС]
Так вот сейчас и пишу просто программку для тренировки навыков консоли)
Получается очень длинный код, сложно ориентироваться
Думаю надо раскидывать по разным файлам и импортировать их в главный)

(Спрашиваю, быстро пытаясь спрятать подальше свои проекты со спагетти кодом на Haskell )
0
240 / 189 / 32
Регистрация: 02.07.2020
Сообщений: 142
16.03.2021, 23:38
XRuZzz, изучение языка без какой-то мгновенной визуальной отдачи сильно демотивирует.
Если не получится подкрепить уверенность в своих силах решением простенькой интерактивной задачей в самом начале, то до сложных библиотек и высокоуровневых абстракций дело просто не дойдет.
1
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241
16.03.2021, 23:49  [ТС]
Читать книги очень долго(
Хочется иногда отдыхать и придумывать что-нибудь)
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
16.03.2021, 23:55
Для кода, который ты не собираешься изменять и если он может пригодиться в других проектах, лучше создать и поддерживать отдельную библиотеку.
Ну и лучше выкладывать свои исходники в интернет и просить опытных программистов, чтобы они посмотрели и указали на плохой код и ошибки.
(Но мне всегда было лень этим заниматься)
Сейчас, в основном, в telegram-e сообщество тусуется:
RuHaskell →Links

Но прежде чем задать вопрос, лучше попытаться самостоятельно разобраться в вопросе по учебникам, видеоматериалам.
Потому что изучать что-либо, только лишь задавая вопросы, не изучая материалы - крайне не эффективно.
Правильно задавать правильные вопросы - это искусство, наверно. Для этого нужно покрутить тему в голове, попытаться взглянуть на неё с разных сторон.
В этом смысле, правильно мыслить учит "Введение" в книге Дынкина, Успенского "Математические беседы"

Не по теме:


Ну и нужно учитывать собственный психотип. если у тебя не аналитическое(логическое) мышление, то не стоит бить головой об программирование, стоит попробоваться себя в творчестве, или в чём-нибудь другом. Программирование оставить, как хобби (я так и пытаюсь делать)

1
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241
17.03.2021, 00:02  [ТС]
Воу) Столько полезной информации за один ответ! Я удивлён
Полностью согласен про самостоятельный разбор!
Учту про код) Ещё раз спасибо
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
17.03.2021, 00:05
Оставить хорошим программистам мир программ, а самому есть траву, познавать себя, наслаждаться жизнью
0
17.03.2021, 00:15  [ТС]

Не по теме:

Ну лично я не делю людей на гум и тех. Это всё бредни мне кажется)
Я считаю что любой может научится всему

0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
17.03.2021, 05:47

Не по теме:

Цитата Сообщение от Egor2287678888 Посмотреть сообщение
Ну лично я не делю людей на гум и тех. Это всё бредни мне кажется)
Я считаю что любой может научится всему
Можешь сам почитать про психоархитипы Юнга, Панченко и т п

Не по теме:


Ну и совсем не по теме: чтобы разобраться как наладить жизнь в стране, изучай теории полит. экономические систем. Михаил Попов рекомендует, чтобы понять Маркса, Энгельса, Ленина, начинать с диалектики Гегеля.
Обнаружил отсутствие темы на форуме:
Капитализм vs коммунизм




Для меня, кстати, образец того как нужно делать интерфейс консольного приложения, это
Wikipedia→Midnight Commander
Я имею ввиду удобство использования, а не исходные коды mc.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.03.2021, 05:47
Помогаю со студенческими работами здесь

Меню выбора
Уважаемые помогите пожалуйста как сделать на главной форме выпадающий меню выбора(то есть при нажатии на кнопку выпадал список форм которых...

Не отображается меню выбора ОС
После того как переустановил Windows 7, пропало меню выбора запуска ОС. До этого прежде чем включался ноут появлялось окно, где были...

Меню выбора плееров
Возможно глупый вопрос, но может извинительно новичку. Каким образом Андроид определяет какие приложения должны появляться в меню выбора...

Меню выбора в консоли
Помогите пожалуйста решить проблему с программой, нужно чтобы была (1 - программа, 2 - функция и 3 - подпрограмма) Using...

Меню выбора системы
Помогите пожалуйста! Я установил win7 7600.16385.090713-1255_x86fre_client_ru-ru_OEM_Ultimate-GRMCULFREO_RU_DVD-ZUKO поставил, до этого...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru