Вопрос по haskell, functional-programming – Реальное программирование на Haskell [закрыто]

48

Будучи императором-разработчиком в течение нескольких лет, у меня никогда не было желания изучать функциональное программирование.

Пару месяцев назад, наконец, я решил изучать Haskell. Это довольно крутой язык, но я озадачен тем, как на таком языке может быть запрограммировано реальное приложение, управляемое событиями. Знаете ли вы хороший учебник об этом?

Note: Когда я говорю «настоящее приложение» Я не говорю о реальном мире, готовом к производству приложении. Я имею в виду небольшой пример приложения, чтобы понять его. Я думаю, что что-то вроде упрощенной версии Windows Caculator было бы здорово, а затем, возможно, что-то более сложное.

& Quot; Событийный & Quot; не является характеристикойwhat приложение делает, ноhow это делает & # x2014; тот же результат, с точки зрения требований бизнеса и производительности, безусловно, может быть достигнут без кодирования всей вашей бизнес-логики в форме «управляемой событиями». код. Нечто управляемое событиями является уровнем реализации, а не аспектом логики предметной области. Erik Allik

Ваш Ответ

7   ответов
6

Однажды я нашел этот бот irc, написанный на haskell:

http://www.haskell.org/haskellwiki/Roll_your_own_IRC_bot

Похоже, хороший и простой способ начать. Спасибо! raven
89

которые вы, вероятно, думаете о проблемах, которые по своей сути являются последовательными или с состоянием или выполняют много операций ввода-вывода, верно?

Итак, как насчет игр?

Frag is a Quake clone, implemented for an undergraduate thesis (Functional Programming and 3D Games, Mun Hon Cheong, 2005). Here's a video of it in action. Super Monao Bros. (formerly known as Super Nario Bros.) is, well, you can probably figure out which game it is a clone of. (This is the author's English language weblog.) Purely Functional Retrogames is a 4-part series of blog articles about how to write games in a purely functional language, explained using Pacman as the example. (Part 2, Part 3, Part 4.)

Или как насчетX Window ManagerрасширяемыйEmacs clone текстовый редактор илиIDE?

Затем есть книга, в которой ваш вопрос уже есть в заголовке:Реальный мир Haskell and что такжедоступно бесплатно!

Еще одна вещь, на которую вы можете захотеть посмотреть, этоФункциональное реактивное программирование, (Он используется, например, во Frag.) Интересной особенностью FRP является то, что он позволяет взглянуть на проблему, скажем, программирования GUI с совершенно другой точки зрения. Если вы прочтете главу о графическом интерфейсе в книге RWH, вы увидите, что в ней говорится о том, как вы можете написать приложение с графическим интерфейсом, как в С, только лучше. FRP OTOH позволяет написать это вtotally different таким образом, что даже не будетpossible в С.

Много раз (я не говорю, что это ваш вопрос, но это повторяющийся шаблон), когда кто-то говорит «но может ли Haskell использоваться в реальном мире», чем он является?really «Я знаю, как сделать это в C, и в Haskell я не могу сделать это точно так же, поэтому в Haskell это невозможно, поэтому Haskell не готов к реальному миру». Но то, что они упускают, это то, что там может быть совершенно другое иmuch better способ решить проблему. (Это все равно, что сказать, что «у Эрланга нет потоков», поэтому его нельзя использовать для реализации параллельных систем ».) FRP является лишь одним примером.

Но также обратите внимание, что существует «Пересмотр» чисто функциональных игр ».prog21.dadgum.com/37.html
Я бы добавил, что XMonad на самом деле плохой пример. Если сравнить это с Awesoe WM(which is using lua)Вы найдете, насколько XMonad громоздок и неудобен. Я слышал, что в этом виноват плохой дизайн ядра, так называемый StackSet.
Точно, я сам думал об играх (однажды я прочитал статью из какого-то университета, в которой предлагалось использовать простую игру для обучения студентов Haskell в реальном мире, но в ней не так много информации). Я уже знал, что не могу делать то же самое, что и в C, и я также знал, что это можно сделать в Haskell (просто по-другому), но понятия не имел. Это в основном причина моего ответа. Большое спасибо всем вам, ребята, вы были очень полезны. raven
8

молниеносный разговор сегодня я собрал список демонстрационных приложений на Haskell, намеренно исключая все, что предназначено только для программистов:

darcs (since 2002, 35 000 loc): Distributed version control system with an innovative focus on changes instead of states. xmonad (since 2007, 30000 loc): Well known tiling window manager with a huge library of layout and other plugins. Made it into the list despite its configuration file being a Haskell file. hledger (since 2007, 9000 loc): Text-file based double-ledger accounting tool, a clone of ledger. Raincat (since 2008, 2000 loc): Platform game with a cat that does not want to get wet. arbtt (since 2009, 2000 loc): My automatic rule-based time tracker. Made it into the list as a shameless plug; probably not that popular. It has now a proper web page contributed by Waldir Pimenta. detexify (since 2010, 500 loc): The back end of the very useful LaTeX character command finder is written in Haskell. git-annex (since 2010, 28 000 loc): Manages your files and their location, a mixture of dropbox and git. Written by famous Joey Hess, who made a living from it via kickstarter He is currently running a second round of funding! Nikki and the Robots (since 2010, 18 000 loc): Platform game with Nikki and, well, his robots. It was produced as a commercial independent game and sold via a pay-what-you-like scheme, but the company unfortunately closed down. hoodle (since 2011, 13 000 loc): A note-taking and PDF annotation software like xournal. Chordify (since 2012, ? loc): Analyses music, e.g. from a YouTube video, and calculates the corresponding guitar chords. Closed software, but supposedly written in Haskell.

(Такжеразмещены в моем блогеи наслайды разговора, с красивыми репрезентативными фотографиями каждой программы.)

7

лушивания, который просыпается от событий, изменяя внутреннее состояние, моделирующее X-сервер, который затем отображается на экране.

http://xmonad.org

6

Это объясняет много вещей, которые «не имеют смысла». повелительному программисту о Haskell

Учебник по Haskell для программистов на C

Это очень хороший урок

Учим тебя Хаскеллу за великое благо

Raytracer, написанный на Haskell

Haskell Raytracer

Вы можете скачать Glasgow Haskell Compiler отсюда. GHC

Я прочитал хорошую часть LYAHFGG. Это очень хорошо и очень забавно, но я до сих пор не нашел ничего о по существу последовательных проблемах. Возможно, я должен продолжать читать. raven
4

Реальный мир Haskell, Книга находится в свободном доступе и показывает, как Haskell может быть применен к проблемам реального мира. Я бы не назвал это учебным пособием, так как оно гораздо более всеобъемлющее.

Похожие вопросы