7

私は Haskell で少し錆びており、立ち直ろうとしています。私が F# で楽しんでいることの 1 つは、Visual Studio と統合された F# Interactive シェルです。実質的に何でも (関数とクラスの定義を含む) 評価し、F# をシェルとして使用できます。Haskellに同等のものはありますか? を使用するghciと、関数定義を評価できません。それをどのように回避しますか?

私の現在の好みの設定は、Emacs を haskell-mode で使用し、インタラクティブな ghi インタープリターを開くことです。しかし、ファイルの領域だけを評価する方法はありますか?

4

6 に答える 6

10

'let'を使用して関数を定義できます。

$ ghci
Prelude> let double n = n + n
Prelude> double 42
84

また、(A)私が書いたものであり、(B)ひどく未開発であるため、これはあまりお勧めしませんが、HalpはEmacsで便利です-ソースに直接統合されたHaskellコードのスプレッドシートに少し似ています-コードバッファ。興味のある一連の式を作成し、1回のキーストロークで、最後の再評価以降の編集に応じてすべての値がどのように変化するかを確認できます。

于 2008-12-04T20:47:35.697 に答える
3

ご覧のとおり、GHCiで実行できることはかなり制限されています。つまり、コマンドラインで簡単にできるのは短い関数や式だけです。残りの部分については、モジュールをロードしていることに気付きます。難しさの1つは、Haskellには使用前の定義がないため、ファイルから意味のあるフラグメントを引き出すのが難しい場合が多いことです。私は通常、小さなモジュールを定義し、それらをロードおよびリロードしていることに気付きます。インタラクティブな体験は、人が望むほど素晴らしいものではありません。

于 2008-12-10T09:50:55.393 に答える
2

Emacs の Haskell モードは、インタプリタを操作するための関数を提供します。したがって、編集したモジュールから何らかの機能を実行したい場合は、 Cc Cl を使用して現在のモジュールを ghci (または別の haskell インタラクティブ) にロードし、インタラクティブでバッファに切り替えて、そこでいくつかのコマンドを実行できます。

于 2008-12-05T09:22:05.237 に答える
1

ghciは、そのようなことを行うための特別な構文を提供します。let関数定義に使用します。ただし、GHC FAQには、複雑な関数では扱いにくい場合があり、通常はファイルからロードすることをお勧めします。ソースファイルとghciプロセスを簡単に統合できるEmacsのようなものを使用する場合、キーストロークで定義をインタープリターにロードできるため、問題にはなりません。

于 2008-12-04T20:51:19.620 に答える
0

FlymakeとEmacsHaskellMode 2.8を組み合わせると非常にうまく機能し、タイプチェッカーの応答がすぐに得られます。私の目には、これはよりインタラクティブです。

于 2011-03-25T21:37:07.513 に答える
0

O'Caml と F# では、定義はファイルの先頭から下に進みます。ただし、Haskell では、ファイル内で以前に定義された型または関数が、そのファイル内の後で型または関数を参照できます。したがって、Haskell では、モジュールを一度にコンパイルする必要があります。対話型ループは、一括コンパイルと互換性がありません。

于 2008-12-04T22:41:53.750 に答える