8

コマンド ラインで Notational Velocity スタイルの find-as-you-type ファイル検索を作成して、Haskell の基本を理解しようとしています。問題全体に取り組む代わりに、私はそれの非常に基本的なバージョンを試しています: 10 行のファイルがあり、各行に 3 文字の単語があります。文字を入力するたびに、これまでの入力に基づいて、入力している単語が含まれている可能性のある行番号のリストの表示を更新したいと考えています。

誰かがこれを行う Haskell プログラムをデモンストレーションできますか? 私の問題は、すべての文字入力で再評価を強制することにあると思います。100 万前もって感謝します。

4

2 に答える 2

2

あなたが要求している Haskell プログラム全体を書き込もうとはしませんが、ここでは、キーを押すたびに何かを実行するという、現時点で行き詰っていると主張する部分を示す非常に短い例を示します。わくわくするようなことは何もしません (数字を打ち込んで出力するだけです) が、その 1 つの小さなタスクを実行する方法を示します。おそらくそこからハッキングを開始できます。

あなたがそうでないように見えることを本当に知る必要がある唯一のことは、入力の行バッファリングをオフにできるということです。

import System.IO

loop n = do
    c <- getChar
    print n
    -- do whatever recalculation you need to do here, using
    -- n (which can be more complicated than an Integer, as
    -- it is here, of course) and c (which is a Char
    -- representing the key the user whacked)
    -- our recalculation is just to increase n by one
    loop (n+1)

main = do
    hSetBuffering stdin NoBuffering -- do this once before anything else
    loop 0
于 2013-03-09T14:40:01.710 に答える
1

リアクティブ プログラミングの学習は、良い出発点になる可能性があります。
このため、良いライブラリはリアクティブ バナナ
のようです いくつかの基本的な例があります。

FRPについてもっと知りたい場合は、スタックに関する優れたトピックが明確な概要を提供します.

于 2013-03-09T11:55:34.803 に答える