14

ghci(またはghc)に、推定されたローカル関数の型を見つける方法はありますか?

たとえば、私が機能を持っている場合

f l = map f' l
   where f' = (+1)

:t推測された型が何であるかを確認するためのghciのような方法はありf'ますか?

4

3 に答える 3

8

確かに、ここにハンマーの素晴らしい答えのおかげで私が学んだことがあります。短いバージョンは次のとおりです。

Prelude> :l /tmp/foo.hs
[1 of 1] Compiling Main             ( /tmp/foo.hs, interpreted )
Ok, modules loaded: Main.
*Main> :break f
Breakpoint 0 activated at /tmp/foo.hs:(1,1)-(2,18)
*Main> f [1..10]
Stopped at /tmp/foo.hs:(1,1)-(2,18)
_result :: [b] = _
[/tmp/foo.hs:(1,1)-(2,18)] *Main> :step
Stopped at /tmp/foo.hs:1:7-14
_result :: [b] = _
f' :: b -> b = _
l :: [b] = _
[/tmp/foo.hs:1:7-14] *Main> :t f'
f' :: b -> b
于 2013-02-23T01:41:46.937 に答える
5

私はGHCiからそれを行う方法を知りません。

ただし、EmacsやVimなどのエディターを使用している場合は、ghc-modを試すことができます。これは、エディターにプラグインする外部ツールであり、ローカル定義を含む任意の式のタイプを取得する機能など、Haskellプログラム用のIDEのような機能を提供します。

EmacsではC-c C-t、式のタイプを見つけるために使用します。

EmacsやVimを使用していない場合は、おそらくghc-modをGHCi拡張機能などとしてラップすることができますが、それはやや厄介だと思います。エディターのようなUIがなければ、それを行うための良い方法を想像することはできません。ただし、ghc-mod自体はスタンドアロンのコマンドラインツールであるため、操作は簡単です。既存のテキストエディタから独立した優れたユーザーインターフェイスを思いつくことができたら、それを試してみてください。

もちろん、EmacsやVimを使用していない場合は、おそらく:Pを使用する必要があります。

于 2013-02-23T00:53:28.257 に答える
0

hdevtoolsを試してみてください。Vimの統合しかありませんが、非常に高速で使いやすいです。

于 2013-02-23T08:05:37.840 に答える