問題タブ [ghci]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1019 参照

function - GHCiでは、関数矢印の種類 `:kind(->)`に疑問符 `(->)::??が含まれているのはなぜですか。->?-> * `?

重複の可能性:
Haskell奇妙な種類:(->)の種類は?? ->?-> *

GHCi(バージョン7.0.2)では、関数の型の種類を尋ねると、結果に疑問符が付きます。

種類にアスタリスクだけでなく疑問符が含まれているのはなぜ* -> * -> *ですか?疑問符はどういう意味ですか?他のタイプがアスタリスクを使用するのはなぜですか?

0 投票する
2 に答える
29735 参照

haskell - ghci '範囲外:' メッセージ

私は「Haskell を学ぶ」チュートリアルを進めており、この部分にいます:

この行を実行しようとすると、次のようになります。

私は何を間違っていますか?

0 投票する
2 に答える
258 参照

haskell - ghci の :t はどのようにして内省的な情報にアクセスするのでしょうか?

関数やデータ型などの型クラスの制約を内省することは不可能のようです。ただし、ghciはそれを行うようです。

だから...どういうわけか、それを出力しているので、型クラスの制約を知っています。それはどのようにやっているのですか?

0 投票する
7 に答える
6263 参照

unicode - GHCi (またはハグ) をハックして、Unicode 文字をエスケープせずに出力する方法は?

問題を見てください: 通常、インタラクティブな Haskell 環境では、(結果の一部を構成する) 非ラテン Unicode 文字はエスケープされて出力されますputStrLnputChar読み取り可能) -- 例は GHCi と Hugs98 を示しています:

print結果をフォーマットするためにとが使用されているためだと推測できshowます。これらの関数は、標準的で移植性の高い方法でデータをフォーマットするために最善を尽くします。そのため、奇妙な文字をエスケープすることを好みます (おそらく、 Haskell の標準):

しかしそれでも、GHCi や Hugs をハッキングして、これらの文字を人間が読める形式で (つまり、直接、エスケープせずに) 印刷する方法を知っていれば素晴らしいことです。これは、インタラクティブな Haskell 環境を教育目的で使用する場合、英語以外の聴衆の前で Haskell のチュートリアル/デモンストレーションを行う場合に高く評価されます。

実際、教育目的だけでなく、デバッグにも役立ちます。ASCII 以外の文字を使用して、他の言語の単語を表す文字列に対して定義された関数がある場合。そのため、プログラムが言語固有であり、別の言語の単語のみがデータとして意味を持ち、そのような単語に対してのみ定義された関数がある場合、GHCi でのデバッグではこのデータを確認することが重要です。

私の質問を要約すると:既存の対話型 Haskell 環境をハックして、結果に Unicode をよりわかりやすく表示する方法はありますか? (私の場合、「親しみやすい」とは「より単純」であることを意味します: printGHCi または Hugs で非ラテン文字をputChar、 , putStrLn、つまりエスケープされていない単純な直接的な方法で表示したいと思います。)

(おそらく、GHCi と Hugs98 に加えて、Haskell と対話するための既存の Emacs モードも見て、それらがきれいなエスケープされていない方法で結果を表示できるかどうかを確認します。)

0 投票する
3 に答える
20588 参照

haskell - Haskell / GHCiで関数の定義を表示するにはどうすればよいですか?

私はGHC6でHaskell2010.1.0.0.1を使用しています。GHCi:tプロンプトに続けて関数の名前を入力すると、関数のタイプが表示されます。関数定義も表示する方法はありますか?

0 投票する
2 に答える
570 参照

haskell - Haskell - fmap fmap が機能しない

私は GHCi (バージョン 6.12.3) を使用して、Haskell で少し遊んでいます。<*>私は最近、ファンクターとアプリカティブ ファンクターについて読みました。アプリカティブ ファンクターに似たものをファンクターのプリミティブのみを使用して実装できないかどうかを考えました。少し考えた後fmap fmap、(ほぼ)理想的なタイプの

Functor f => f (a -> b) -> f (f a -> f b) またはより一般的に

(Functor f1, Functor f2) => f1 (a -> b) -> f1 (f2 a -> f2 b)

私は試した

次のエラーが発生しました

上記の型シグネチャを提案どおりに記述しても役に立ちませんでした。最もクレイジーなことは、入力したとき:t fmap fmapに上記と同等のタイプを取得したことです。

私は何を間違っていますか?GHCiが型を見つけたのになぜfmap fmap型エラーになるのですか?

0 投票する
1 に答える
1390 参照

debugging - Haskell の無限再帰

この質問は本質的に GHCi を使用した Haskell プログラムでの無限ループのデバッグの複製です。他の解決策を知りたいのですが、著者は手動で解決しました

(私の特定の問題)

再帰呼び出しを含む矢印コードがあります。

errorArrow、再帰的な testAVFunctor を実行しないようにする必要があります。これにより、 isError が を返しLeft (AVError "good error")、ルートを選択しpassErrorて再帰呼び出しをバイパスする必要があります。

非常に奇妙なことは、関数合成のような一般的なサイトに「トレース」呼び出しを挿入すると、プログラムが有限量の出力を発行してからフリーズすることです。無限項展開問題から私が期待するものではありません。(編集1を参照)

誰かが興味を持っている場合は、ここにソースコードをアップロードしました。

編集1

私は正しい場所を探していませんでした (ソースを見たい場合は、明らかにavEitherがループしていたようです)。私がそこにたどり着いた方法は、バイナリをコンパイルして gdb を実行することでした:

  • gdb メイン
  • r (コードを実行)
  • Ctrl+C (割り込み送信) . バックトレースは役に立たないだろうが、できることは当たっている
  • s (ステップ) . 次に、Enter キーを押したままにします。多くのメソッド名が飛び交うはずです。そのうちの 1 つが認識されることを願っています。

ghc フラグ-O0を付けてコンパイルすると、最適化を無効にすることができます。これにより、より多くのメソッド名が明らかになります。

編集3

どうやら、proc x -> do上記のブロックによってコードがコンビネータを生成し、AVFunctor.arrリフティング メソッドを呼び出していたようです。トップレベル関数を次のように書き換えると

その後、すべて正常に動作します。ガローを学び、使用してみる時が来たと思います(ここバークレーの大学院生による)。

経験からの私の一般的なポイントは、ghci のデバッグがイライラする可能性があるということです。たとえば、ローカル変数として show の引数を作成することはfできAVFunctor.arrましたが、そこから非常に有益なものを取得することはできません。

修正後のソースコードはこちら

0 投票する
1 に答える
167 参照

list - リスト内の要素のリストを更新しますか?

重複の可能性:
単一のリスト内の要素のリストのリストを更新しますか?

以下に示すような値のリストがあります。

そして以下を返したい:

個々のリストだけで機能する次の関数があります。

ただし、リスト内でこれらの複数のリストを操作するのに問題があるようです。これら 2 つのリスト (つまり、別のリスト内のリスト) を処理する関数をどのように考案すればよいでしょうか?

まだ (x:xs) の全体について頭を悩ませようとしています。

0 投票する
5 に答える
3942 参照

macos - MacOSXのGHCiで動作するHaskellグラフィックライブラリ

次の要件を満たすHaskellグラフィックライブラリまたは外部ライブラリへのバインディングが存在しますか?

  1. から使用できますghci。つまり、プログラムをリンクして再起動する必要はありません。
  2. MacOS Xで動作します(1と組み合わせてトリッキーです!)
  3. 単純なベクターグラフィック(線、多角形、単純な塗りつぶし、ストローク)を実行できます。
  4. 画面にビットマップ画像を配置できます。例:17x12の.bmp画像をブリットします。

特にポイント1と2を確認できるように、最小限のソースコード例またはその参照(画面上のウィンドウのみ、内部に緑色の線が引かれている可能性があります)を含めてください。また、これらの機能要求の1つがより複雑な場合(たとえば、OpenGL + 4)、適切なリファレンスを含めてください。


PS:1と2に関しては、私はそのトリックを知っており、enableGUIそれを喜んで使用します。ただし、ほとんどのライブラリには、関数を複数回実行できないため、main資格がないという問題があります。


編集:あなたの時間を無駄にしないために、ここに私が試したパッケージのリストがあります:

  • wx -ghciが窒息するlibstdc++
  • sdl-mainマクロとして再定義します。コンパイル時のみ。
  • GLFW(OpenGL) -2main回実行できません。これは、「マウスイベントハンドラーをインストールできないために失敗する」というものです。
0 投票する
2 に答える
153 参照

networking - TCPはGHCiで動作し、Leksahでコンパイルされたプログラムでプログラムが終了するまでバッファリングされます

開発中のサーバーにコマンドを送信するために、この単純なプロトタイプクライアントを作成しました。GHCiで完全に動作しますが、コンパイルされたバージョンは、「quit」と入力してプログラムが終了するまで、入力されたすべてのものをバッファリングします。その時点で、すべての入力テキストが送信されます。

私は何が間違っているのですか?そして、コンパイルするとなぜ違うのですか?

更新:を使用してコンパイルすると、期待どおりに機能しghc Main.hsます。この問題は、[パッケージ]->[ビルド]を介してLeksahでコンパイルすると発生します。Leksahが使用しているコマンドラインを取得する方法を知っている人はいますか?

システム情報:OSX 10.6、GHC 7.0.3、ネットワーク2.3.0.2