Хороший небольшой простой пример программирования реальной жизни в Haskell?

Я знаю, я мог бы много спрашивать, но знает ли кто-нибудь о некоторых симпатичных небольших примерах/библиотеках программирования для Haskell.

Для курса "введение в программирование" я хочу показать, что Haskell - это нечто большее, чем "маленький script язык для сортировки чисел".

Я уже нашел клон Quake (Real Haskell programming), который впечатляет, но слишком сложен для учащихся, чтобы играть с ним.

У вас есть идея? Может быть, что-то с графикой или взаимодействием с веб-сервисом? Что-то подходящее для студентов первого года обучения.

Спасибо за ваш ввод!

[обновление]

Или, может быть, вы знаете "забавную" библиотеку?

Ответы

Ответ 1

Перейдите на http://hackage.haskell.org - там есть 2200+ библиотек и программ, многие из раздел игр, в частности, где предназначен для обучения. Как и этот jpeg encoder, или этот приятный mp3-декодер.

С точки зрения практичности, ядро ​​xmonad является кратким, чистым и используется тысячами людей каждый день.

Ответ 2

Я собираюсь добавить плагин для Star Rover и Freekick, по нескольким причинам:

  • Это игры, поэтому у них есть этот "вау" фактор для студентов (хотя и с довольно ограниченной воспроизводимостью сейчас - Freekick по сути играет против себя, и если вы можете убить врага в Star Rover, вы лучше геймер, чем я).
  • Разработчик написал очень информативный блог, который поможет учащимся получить представление об кривой обучения.
  • Обе игры содержат очень простые фрагменты кода, которые студенты смогут сразу понять: например, модуль Tree или функция преобразования радианов в градусы.
  • Библиотечные зависимости относительно минимальны: OpenGL и SDL, в основном.

Удачи, и надеюсь, что это поможет.

Ответ 3

xmonad - хорошая идея, как говорили другие, если вы можете показать их им. Кстати, Саймон Пейтон Джонс очень убедительно использовал xmonad в своем учебнике "Вкус Хаскелла" http://research.microsoft.com/en-us/um/people/simonpj/papers/haskell-tutorial/index.htm

Это менее визуально, но я хотел бы проголосовать за Pandoc - сосредоточиться на невероятно простой центральный модуль, определение "документа" и показ того, как чистые функции экспортируются "авторы" и 'читатели (readMarkdown, writeLatex и т.д.) относятся к нему.

Ответ 4

Самый популярный пример, который я знаю, - это xmonad tiling window manager. Это реальная программа, которую люди действительно используют, и кодовая база является довольно маленькой и хорошо написанной (мне сказали - я вряд ли считаю себя квалифицированным, чтобы судить большинство людей кода Haskell).

Ответ 5

Это является ссылкой на Девяносто девять проблем Haskell, которая была основана на девяносто девяти проблемах Пролога. Я не знаю, действительно ли это именно то, что вы хотите, но там может быть что-то, что вы можете использовать.

Ответ 6

Когда я изучал Haskell, я использовал Hangman в качестве первой программы. Это просто, взаимодействие с пользователем и файлом, небольшая, но некоторая обработка ошибок и т.д. Все ваши ученики услышат об этом или могут быстро научить игру. Я думаю, что моя программа оказалась вокруг страницы кода.

Ответ 7

Как насчет cat, wc и друзей?