タグ付けされた質問 「ghci」

7
複数の行にまたがるghciで関数を定義する方法は?
ghciで複数の行にまたがる単純な関数を定義しようとしています。例として次のようにします。 let abs n | n >= 0 = n | otherwise = -n これまでのところ、最初の行の後でEnterキーを押してみました。 Prelude> let abs n | n >= 0 = n Prelude> | otherwise = -n <interactive>:1:0: parse error on input `|' また、:{and :}コマンドを使用しようとしましたが、遠くまで行きません: Prelude> :{ unknown command ':{' use :? for help. LinuxのHaskell 98でGHC Interactiveバージョン6.6を使用していますが、何が欠けていますか?
161 haskell  ghci 

5
GHCiの複数行コマンド
ghciで複数行のコマンドを入力する際に​​問題があります。 次の2行のコードはファイルから機能します。 addTwo :: Int -> Int -> Int addTwo x y = x + y しかし、ghciと入力すると、エラーが発生します。 <interactive>:1:1: error: Variable not in scope: addTwo :: Int -> Int -> Int 私もコードを:{ ... :}に入れてみましたが、これは行を1行に追加するだけなので、この例では機能しません。 WinGHCiバージョン2011.2.0.1を使用しています
134 haskell  ghci 

1
Emacs Interactive-Haskellは、cabalまたは作業ディレクトリのいずれかがプロジェクトディレクトリに設定されている場合、応答を返さない
のInteractive-Haskell replで奇妙な動作が発生していますemacs。ファイルを読み込むと、emacsミニバッファーに一連のインタラクティブなプロンプトが表示されます。 Start a new project named 'myproject'? Cabal dir (guessed from myproject.cabal): Build target (empty for default): Set current directory: cabalディレクトリまたは現在のディレクトリをプロジェクトディレクトリのデフォルト値のままにすると、replが応答しなくなります。対話型のHaskellウィンドウにラムダプロンプトが表示されて入力できますが、Enterキーを押すと評価されません。カーソルは、Enterキーをまったく押しなかった場合と同じ行に留まります。 これらの両方のディレクトリをプロジェクトディレクトリ以外のパスに変更すると、replは正常に動作し、式を期待どおりに評価します。
124 haskell  emacs  cabal  ghci 


3
ghciがタイプリストとタイプファミリーを廃止するのはなぜですか?これを選択的に無効にできますか?
私のライブラリでghciが表示するタイプをできるだけ直感的にしようとしていますが、より高度なタイプ機能を使用すると、多くの困難に直面しています。 このコードがファイルにあるとしましょう: {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} import GHC.TypeLits data Container (xs::[*]) = Container それをghciにロードしてから、次のコマンドを入力します。 ghci> :t undefined :: Container '[String,String,String,String,String] 残念ながら、ghciは私にかなり醜い見た目を与えます: :: Container ((':) * String ((':) * String ((':) * String ((':) * String ((':) * String ('[] *)))))) ghciは型レベル文字列の砂糖を削除しました。ghciがこれをして、私にきれいなバージョンを与えるのを防ぐ方法はありますか? 関連するメモとして、タイプレベルのReplicate関数を作成するとします。 …
93 haskell  types  ghci 


3
GHCiを使用するときに関数に明示的な型宣言を提供するにはどうすればよいですか?
GHCi内でこの関数(learnyouahaskellから取得)に相当するものを定義するにはどうすればよいですか? import Data.List numUniques :: (Eq a) => [a] -> Int numUniques = length . nub 型宣言がないと、GHCiは関数定義を受け入れますが、役に立たない型になってしまいます。 Prelude Data.List> import Data.List Prelude Data.List> let numUniques' = length . nub Prelude Data.List> :t numUniques' numUniques' :: [()] -> Int 結果の関数は、パラメーターとして単位のリストのみを受け入れます。 GHCiで型宣言を提供する方法はありますか?または、型宣言を必要としないこれらのような関数を定義する別の方法はありますか? GHCiガイドに明らかな手がかりは見当たらず、次のような表現を試しました(役に立たなかった)。 > let numUniques' = ((length . nub) :: (Eq …

1
Haskellでの(^)の奇妙な動作
GHCiが以下の不正解を返すのはなぜですか? GHCi λ> ((-20.24373193905347)^12)^2 - ((-20.24373193905347)^24) 4.503599627370496e15 Python3 >>> ((-20.24373193905347)**12)**2 - ((-20.24373193905347)**24) 0.0 更新 Haskellの(^)関数を次のように実装します。 powerXY :: Double -> Int -> Double powerXY x 0 = 1 powerXY x y | y < 0 = powerXY (1/x) (-y) | otherwise = let z = powerXY x (y `div` 2) in …

1
Haskellsウィークヘッドノーマルフォーム
私はいくつかのイライラするものにつまずきました。私はhaskellが弱い頭の正規形(WHNF)で機能することを知っており、これが何であるかを知っています。次のコードをghciに入力します(私の知識では、式をWHNFに削減する:sprintコマンドを使用しています)。 let intlist = [[1,2],[2,3]] :sprint intlist 与えintlist = _これますが、完全に私には意味。 let stringlist = ["hi","there"] :sprint stringlist 与えstringlist = [_,_] これは、すでに私を混乱させる。しかしその後: let charlist = [['h','i'], ['t','h','e','r','e']] :sprint charlist 意外と与える charlist = ["hi","there"] 私がHaskellを理解している限り、文字列は文字のリストに他なりません。これは、型"hi" :: [Char]とを確認することで確認できます['h','i'] :: [Char]。 私の理解では、上記の3つの例はほぼ同じ(リストのリスト)であり、したがって同じWHNF、つまり_に削減する必要があるため、混乱しています。何が欠けていますか? ありがとう
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.