もちろん、テキストアドベンチャーゲームZorkをプレイしました。 ダンジョンへの入り口を探していたとき、またはクラブでゴブリンを通り抜ける方法を考えていたときのことを今でも覚えていますか。 剣を振った方法を覚えており、「ヒットセルフ」と「キルセルフ」のさまざまなオプションを試しました。 プログラムはあなたのコマンドを理解しました-結果は予測可能でした... Zorkのテキストの世界を研究するのは楽しくて驚くべきことでした! そしてもちろん、あなたはあなた自身の手でこのようなものを作りたかったのです。 それで試してみる? 一緒に? このガイドでは、段階的にすばらしいHaskell言語でテキストゲームを作成します。
Haskell、またはプログラミングについても何も知らない人に伝えるかのように、使用されるすべての概念を詳細に説明しようとします。 マニュアルは言語を学習するためのコードと並行して書かれているため、これは常にうまくいくとは限りません。 できれば、すべての質問に答える準備ができています。 洗練されたHaskellistsは、解答、説明、およびプログラムコードをどこか不器用または不完全な場所に見つける可能性があります。 それは何でもありません。森の中
F#、OCaml、Erlang、Lispではなく、Haskellなのはなぜですか? これらのHaskellはダークホースです。 自分で判断してください。 Lispは非常に古く、非常に強力なマルチパラダイム言語です。 最高の1つ、最高レベルの1つ。 彼は長い間ニッチを占有し、多くのアイデアでプログラミングの芸術を発表しました。 しかし、経験の浅い目は、Lispコードに硬い括弧を見る。 Lispのような言語は慣れるのが簡単ではないので、時間がかかります。 F#? さて、純粋にイデオロギー上の理由から、.NETを引き付けたくありません。 アーランは、主観的には、他の目的を目的としたヘビー級のようです。 そのメリットは素晴らしいものではありませんが、なぜクエストを作成するような特定のタスクで私たちを必要とするのですか? おそらく、OCamlだけがHaskellと議論することができました-同様の構文と同等の表現力を持つ近親者として。 最も機能的な言語として作成されたHaskellが、今ではなく将来的にその鼻を拭くことができるのは私だけです。 少なくともこれは、彼のライフカーブを観察することで期待できます。今では急激に上昇しています。 他の多くの理由が見つかります。 Haskellがなぜ重要なのかは重要ではありません。 私は一つのことを知っています:それを書くことは大きな喜びであり、あなたが気づくのはもっと楽しいことです:それはHaskell-コンピュータサイエンスの最先端です。
もちろん、実際には、HaskellはErlangとLispの両方を失い、最後のF#は明らかに、多くの.NETアプリケーションプログラマーを征服することを目的としていました。 Haskell言語の作成者の1人であるSimon Peyton Jonesは、非公式のモットーである「すべての犠牲を払って人気を避ける」ことを思いつきました。 うまくいけば、これらの記事のシリーズが彼を失望させないことを願っています。 Haskellについて読んだ誰かがそれを研究し始め、彼の哲学を理解した後、彼はそれをどこかに適用しようとする可能性があります。 私は小さなトライアルプログラムを書いている間、パーサーとその上での電話交換からのトラフィックの合併というアイデアに感染していました(私はテレコムで働いています)。 このアイデアを実装しました。 プログラムは完璧ではなく、ピーク負荷では大量のメモリが必要であることが判明しましたが、その大きな利点は、動作中のプロトタイプがあれば改善でき、新しい条件にすばやく適応できることです。 Haskellのコードは簡単にやり直すことができますが、面倒なデバッグに伴うこの頭痛の種はもうありません。 そして、これは関数型プログラミング全体に関するものではなく、言語によるものですが、私はHaskellをFPに関連付けたいと思っています。
練習といえば。 Haskellの構文がGeSHiでどれほど美しくハイライトされているか見てみたはずです! さて、ここに例があります:
結局のところ、真実は素晴らしいバックライトですか? 残念ながら、Habrahabrは高度なタグをサポートせず、「フォント」のみをサポートしています。 そして何をすべきか? 結果をシャベルし、すべてを「フォント」に置き換えますか? あなたは苦しんでいます。 または、GeSHiの内部に入りますか? しかし、私はPHPが好きではありません! どちらも好きではなかったので、夕方にHaskellでパーサーフォーマッターを書いたところです。 そして、それはうまくいくようです。 不完全にもかかわらず。 これにより、私の記事のコードがGeSHiとほぼ同じように強調表示されます。
私のクエストのプロジェクトは、Adv2Game(Advanced Adventure Game)と呼ばれています。 ソースはプロジェクトページ ( git )にあります。 そして、私がここに投稿するマニュアルの付属コード( git )。 私が偶然選んだ名前「Adv2Game」。 事実、Hackell Hackageリポジトリには単純なadvgameクエストがあります-そこからいくつかのアイデアを借りて、自分のやり方でそれらを打ち負かしました。 今、私のクエストは完全にはほど遠いです、そして、私はそれがこれまでに完了することを保証することができません。 もちろん、プロジェクトを不完全なままにしておくのは良くありません。 それにもかかわらず、私の記事が無駄にならないことを望み、彼らに感謝する誰かがHaskellにプロジェクトを終わらせることを願っています。
Haskellについて学ぶための文献は多様ですが、残念ながらほとんどが英語です。
最高の英語ソース:
1.「 大丈夫 、Haskellを学ぼう!」( サイト 、 章のmhtファイルのzipアーカイブ )。
2.「Real World Haskell」( サイト 、 章内のmhtファイルのzipアーカイブ )。
3. HaskellWiki ( すべての種類のマニュアルのリストを含む)。
4. Haskell Planet 。
ロシア語の資料:
1.このブログでは、善良な人々による「Haskellを学んでください!」の部分的な翻訳。 ( [1] 、 [2] 、 [3] 、 [4] )。
2. 「関数型プログラミングの実践」ジャーナル-本当に素晴らしい仕事です!
3. Haskellで書いている賢い人々のブログ: _adept_ 、 thesz 、 Alex Ott 、 yantayga 。
さて、冒険を求めて?..
内容:
あいさつ
パート1-先
パート2-フォレスト
パート3-ポリアナ
パート4-キャニオンのビュー
パート5-ホール