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

Haskellは、強力な静的型付け、遅延評価、広範な並列処理と同時実行のサポート、独自の抽象化機能を備えた関数型プログラミング言語です。

4
JVM上のHaskell?
HaskellをJVMで実行する(コンパイルまたはインタープリター)方法があるかどうか疑問に思っていますか? SourceforgeにはJHaskellがありますが、これは空で死んでいるようです。 GHCはコンパイラのバックエンドとしてLLVMを使用します。LLVMをJavaバイトコードにコンパイルするのは良い考えですか、それとも可能ですか?または、別のコンパイラバックエンドを使用しますか?

3
Haskell:lift vsliftIO
どのような状況liftIOで使用する必要がありますか?を使用している場合ErrorT String IO、このlift関数はIOアクションをに持ち上げるために機能するためErrorT、liftIO不要に思えます。

4
Cabalパッケージのバージョンをアンインストールするにはどうすればよいですか?
Happstack Liteは、blaze-htmlバージョン0.5を取得していて、バージョン0.4が必要なため、問題が発生しています。Cabalによると、バージョン0.4.3.4と0.5.0.0の両方がインストールされています。0.5.0.0を削除して、古いバージョンだけを使用したいと思います。しかし、秘密結社は、「アンインストール」コマンドを持っていない、と私はしようとするとghc-pkg unregister --force blaze-html、ghc-pkg私のコマンドが無視されてきたと言います。 私は何をしますか? 更新:信じないでください。ghc-pkgコマンドを無視すると主張していますが、コマンドは無視されません。そして、ドン・スチュワートの受け入れられた答えで、あなたはあなたが排除したいバージョンを正確に削除することができます。
82 haskell  ghc  cabal 

5
モナドが合成の下で閉じられていないことを示す具体的な例(証拠付き)?
適用可能なファンクターは構成の下で閉じられますが、モナドは閉じられないことはよく知られています。しかし、モナドが常に構成されているとは限らないことを示す具体的な反例を見つけるのに苦労しています。 この答えは[String -> a]、非モナドの例として示しています。少し遊んだ後は直感的に信じますが、その答えは「結合は実装できない」と言っているだけで、正当な理由はありません。もっとフォーマルなものが欲しいのですが。もちろん、タイプの関数はたくさんあります[String -> [String -> a]] -> [String -> a]。そのような関数は必ずしもモナドの法則を満たさないことを示さなければなりません。 (証拠を伴う)どんな例でもかまいません。特に上記の例の証拠を必ずしも探しているわけではありません。

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 …

6
(機能的?)プログラミングの文脈で「具体化」と「具体化」はどういう意味ですか?
Haskellと関数型プログラミングに関するブログ(特にsigfpeのブログ)でこの用語をよく読んでいますが、それが何を意味するのかわかりません。私はほとんどの場合それを知らなくても大丈夫ですが、私が知っていれば、おそらくテキストをもっとよく理解していたでしょう。グーグルは私を助けませんでした。私は技術的なもので迷子になります。 また、世界の非技術的な意味(「抽象的対象を変える」)は、コードで何かを具体化することが実際に何を意味するのかを理解するのに役立ちません。 私はコンピュータサイエンスの概念が少し遅いので、コードを使った実用的な例がいいでしょう。:P

2
HaskellはIOを「何もしない」、または他にない場合
Haskellで次のようなことをしたい: main1 = do s <- getLine if s == "foo" then putStr "You entered foo" がないので、明らかにこれは合法ではありませんelse。私が考えた1つの選択肢: nop :: IO () nop = sequence_ [] main2 = do s <- getLine if s == "foo" then putStr "You entered foo" else nop これは少し冗長ですが、必要に応じて解決します。nopただし、の組み込みバージョンがなかったら、私は驚きます。 または: doIf :: Bool -> IO () …
81 haskell  syntax  io 

1
レビティポリモーフィズムとは
質問のタイトルが示すように、私はレビティポリモーフィズムとは何か、そしてその動機は何ですか?このページには詳細が含まれていることは知っていますが、説明のほとんどは頭のてっぺんにあります。:) 一方で、このページが少し親しみやすいですが、私はまだそれの背後にある動機を理解することはできませんよ。
81 haskell 

3
ジッパーコモナド、一般的に
任意のコンテナタイプが与えられると、(要素に焦点を合わせた)ジッパーを形成し、この構造がコモナドであることがわかります。これは最近、次のタイプの別のStackOverflowの質問で非常に詳細に調査されました。 data Bin a = Branch (Bin a) a (Bin a) | Leaf a deriving Functor 次のジッパー付き data Dir = L | R data Step a = Step a Dir (Bin a) deriving Functor data Zip a = Zip [Step a] (Bin a) deriving Functor instance Comonad Zip where ... …

5
Haskell Web開発のエコシステムは何ですか?[閉まっている]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 8年前に閉鎖されました。 この質問と最近の事件に触発されて、私はHaskellのWeb開発に何が関係しているのか疑問に思っています。 Haskell Webフレームワークまたはテンプレートエンジンはありますか? Haskellサイトのホスティングはどのように機能しますか?適切なWebサーバーはありますか? Haskellは、Web開発でよく使用される通常の迅速な開発とプロトタイピングベースのワークフローには複雑すぎますか? 既存のHaskellWebアプリケーションの例はありますか?
80 haskell 

3
関数型プログラミングの「部分関数」とは、正確にはどういう意味ですか?
私の理解によると、部分関数は、関数に渡すパラメーターが予想よりも少ないことで得られる関数です。たとえば、これがPythonで直接有効だった場合: >>> def add(x,y): ... return x+y ... >>> new_function = add(1) >>> new_function(2) 3 上記のスニペットでnew_functionは、部分的な関数です。ただし、Haskell Wikiによれば、部分関数の定義は 部分関数は、指定されたタイプのすべての可能な引数に対して定義されていない関数です。 だから、私の質問は、「部分的な機能」とは正確には何を意味するのですか?

2
再帰的な合計タイプを処理するときにコードの重複を減らす方法
私は現在、プログラミング言語の簡単なインタープリターに取り組んでおり、次のようなデータ型があります。 data Expr = Variable String | Number Int | Add [Expr] | Sub Expr Expr そして、私は次のような単純なことを行う多くの関数を持っています: -- Substitute a value for a variable substituteName :: String -> Int -> Expr -> Expr substituteName name newValue = go where go (Variable x) | x == name = Number newValue go …

5
「メジャーC」ではなく「Cメジャー」と書く機会はありますか?
音楽プロジェクトで小さな美的問題に遭遇し、しばらくの間悩まされてきました。 タイプがdata Key = C | D | ...ありScale、a Keyとa からを構築できModeます。Mode例えば、Aメジャーとマイナースケールを区別します。 Modeタイプを関数Keyto からとして定義できますScale。その場合、モードには小文字の名前が付き(これで問題ありません)、次のようなスケールを取得できます。 aScale = major C しかし、ミュージシャンはこのように話しません。彼らはこのスケールをメジャーCスケールではなく、Cメジャースケールと呼びます。 私が欲しいもの 理想的には書きたい aScale = C major これはまったく可能ですか? 私が試したもの からa Keyを作成する関数を作成できるので、ScaleMode aScale = c Major しかし、キーをスケールの構築に限定することはできません。それらは他のものにも必要です(例えば、コードの構築)。またKey、のインスタンスである必要がありますShow。 追加の関数(または値コンストラクター)を使用する場合、Modeその後に置くことができKeyます。 aScale = scale C major と scale :: Key -> Mode -> Scale しかし、余分な単語スケールは、その名前に反して騒々しく見え、scale実際にはスケールとは関係ありません。インテリジェントな部分はにありmajor、scale本当にただflip ($)です。 よりインテリジェントである必要があることnewtype …
39 haskell  dsl 

3
System.InfoへのアクセスがHaskellのIO操作と見なされないのはなぜですか?
モジュールでSystem.Info私はこれらの機能を見ます: os :: String arch :: String compilerName :: String compilerVersion :: Version なぜそこがないのIOですか?彼らはシステムにアクセスしています...私は間違っていますか?私の期待は次のようなものでした: os :: IO String arch :: IO String compilerName :: IO String compilerVersion :: IO Version 使用事例: print os -- "darwin" print arch -- "x86_64" print compilerName -- "ghc"
25 haskell 

2
最新のGHCバージョンには、何らかの証拠消去がありますか?
たとえば、次の小さなプログラムのように、型システムのメリットのためだけに存在するパラメーターがあるとします。 {-# LANGUAGE GADTs #-} module Main where import Data.Proxy import Data.List data MyPoly where MyConstr :: Proxy a -> a -> (Proxy a -> a -> Int -> Int) -> MyPoly listOfPolys :: [MyPoly] listOfPolys = [MyConstr Proxy 5 (const (+)) , MyConstr Proxy 10 (const (+)) , MyConstr …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.