Skip to content

Commit

Permalink
add description
Browse files Browse the repository at this point in the history
  • Loading branch information
kzfm committed Jul 9, 2012
1 parent 86445ac commit 8d2ec92
Show file tree
Hide file tree
Showing 4 changed files with 139 additions and 4 deletions.
49 changes: 48 additions & 1 deletion chatbot.html
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,50 @@ <h2>オウム返しさせる<a class="headerlink" href="#id6" title="Permalink t
monapo&gt; たむけん参上!
</pre></div>
</div>
<div class="section" id="id7">
<h3>コードの説明<a class="headerlink" href="#id7" title="Permalink to this headline"></a></h3>
<p>まずはモジュールをインポートします。</p>
<div class="highlight-haskell"><div class="highlight"><pre><span class="kr">import</span> <span class="nn">System.Console.Readline</span>
</pre></div>
</div>
<p>続いてmainの定義を書きます。</p>
<ul class="simple">
<li>mainはloopっていう関数です</li>
<li>loopっていう関数はreadlineで入力を受け付けて、入力が</li>
</ul>
<blockquote>
<div><ul class="simple">
<li>何もない場合と&#8221;quit&#8221;という文字列の場合はreturnする</li>
<li>それ以外の場合はオウム返ししてloop関数を実行する</li>
</ul>
</div></blockquote>
<div class="highlight-haskell"><div class="highlight"><pre><span class="nf">main</span> <span class="ow">::</span> <span class="kt">IO</span> <span class="nb">()</span>
<span class="nf">main</span> <span class="ow">=</span> <span class="n">loop</span>
<span class="kr">where</span> <span class="n">loop</span> <span class="ow">=</span> <span class="kr">do</span>
<span class="n">maybeLine</span> <span class="ow">&lt;-</span> <span class="n">readline</span> <span class="s">&quot;&gt; &quot;</span>
<span class="kr">case</span> <span class="n">maybeLine</span> <span class="kr">of</span>
<span class="kt">Nothing</span> <span class="ow">-&gt;</span> <span class="n">return</span> <span class="nb">()</span>
<span class="kt">Just</span> <span class="s">&quot;quit&quot;</span> <span class="ow">-&gt;</span> <span class="n">return</span> <span class="nb">()</span>
<span class="kt">Just</span> <span class="n">line</span> <span class="ow">-&gt;</span> <span class="kr">do</span>
<span class="n">putStrLn</span> <span class="o">$</span> <span class="s">&quot;monapo&gt; &quot;</span> <span class="o">++</span> <span class="n">line</span>
<span class="n">loop</span>
</pre></div>
</div>
<p>ポイントはdoです。do構文を使うと関数が順番に実行されるようになります。
よくある手続き型のスクリプト言語の感覚で書けるようになります。それがdo
です。</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">doはmoco&#8217;sキッチンにおけるオリーブオイルのようなものだと覚えておけば
安心です。怖がらずなんにでもかけてみよう!</p>
</div>
<p>下の例だとputStrLnした後にloopを実行してます。</p>
<div class="highlight-haskell"><div class="highlight"><pre><span class="kt">Just</span> <span class="n">line</span> <span class="ow">-&gt;</span> <span class="kr">do</span>
<span class="n">putStrLn</span> <span class="o">$</span> <span class="s">&quot;monapo&gt; &quot;</span> <span class="o">++</span> <span class="n">line</span>
<span class="n">loop</span>
</pre></div>
</div>
</div>
</div>
</div>

Expand All @@ -158,7 +202,10 @@ <h3><a href="index.html">Table Of Contents</a></h3>
</ul>
</li>
<li><a class="reference internal" href="#id5">人工無脳の名前を考えよう</a></li>
<li><a class="reference internal" href="#id6">オウム返しさせる</a></li>
<li><a class="reference internal" href="#id6">オウム返しさせる</a><ul>
<li><a class="reference internal" href="#id7">コードの説明</a></li>
</ul>
</li>
</ul>
</li>
</ul>
Expand Down
46 changes: 45 additions & 1 deletion chatbot.rst
Original file line number Diff line number Diff line change
Expand Up @@ -104,5 +104,49 @@ Haskell Platformをインストールすれば使えるようになっている
monapo> たむけん参上!
.. todo:: コードの説明
コードの説明
------------

まずはモジュールをインポートします。

.. code-block:: haskell
import System.Console.Readline
続いてmainの定義を書きます。

- mainはloopっていう関数です
- loopっていう関数はreadlineで入力を受け付けて、入力が
- 何もない場合と"quit"という文字列の場合はreturnする
- それ以外の場合はオウム返ししてloop関数を実行する

.. code-block:: haskell
main :: IO ()
main = loop
where loop = do
maybeLine <- readline "> "
case maybeLine of
Nothing -> return ()
Just "quit" -> return ()
Just line -> do
putStrLn $ "monapo> " ++ line
loop
ポイントはdoです。do構文を使うと関数が順番に実行されるようになります。
よくある手続き型のスクリプト言語の感覚で書けるようになります。それがdo
です。

.. note::

doはmoco'sキッチンにおけるオリーブオイルのようなものだと覚えておけば
安心です。怖がらずなんにでもかけてみよう!

下の例だとputStrLnした後にloopを実行してます。

.. code-block:: haskell
Just line -> do
putStrLn $ "monapo> " ++ line
loop
2 changes: 1 addition & 1 deletion searchindex.js

Large diffs are not rendered by default.

46 changes: 45 additions & 1 deletion sources/chatbot.txt
Original file line number Diff line number Diff line change
Expand Up @@ -104,5 +104,49 @@ Haskell Platformをインストールすれば使えるようになっている
monapo> たむけん参上!


.. todo:: コードの説明
コードの説明
------------

まずはモジュールをインポートします。

.. code-block:: haskell

import System.Console.Readline

続いてmainの定義を書きます。

- mainはloopっていう関数です
- loopっていう関数はreadlineで入力を受け付けて、入力が
- 何もない場合と"quit"という文字列の場合はreturnする
- それ以外の場合はオウム返ししてloop関数を実行する

.. code-block:: haskell

main :: IO ()
main = loop
where loop = do
maybeLine <- readline "> "
case maybeLine of
Nothing -> return ()
Just "quit" -> return ()
Just line -> do
putStrLn $ "monapo> " ++ line
loop

ポイントはdoです。do構文を使うと関数が順番に実行されるようになります。
よくある手続き型のスクリプト言語の感覚で書けるようになります。それがdo
です。

.. note::

doはmoco'sキッチンにおけるオリーブオイルのようなものだと覚えておけば
安心です。怖がらずなんにでもかけてみよう!

下の例だとputStrLnした後にloopを実行してます。

.. code-block:: haskell

Just line -> do
putStrLn $ "monapo> " ++ line
loop

0 comments on commit 8d2ec92

Please sign in to comment.