2017-01-20 4 views
0

私たちは現在、完全に理解していない大学の課題に取り組んでいます(解答はしませんが、アイデアや提案のみ)。与えられた何ハスケル - 機能を呼び出す関数を持っています

がタイプです:

type MyType = String -> String 

今、私たちは2つの文字列と機能(タイプ)を取り、その後、機能(タイプ)を与える機能を持つことができるようにしようとしている

myCode :: String -> String -> MyType -> MyType 

と我々はすでにがMyType 1つとして使用することができる機能、実装:

emptyString :: MyType 
emptyString :: (\a -> "") 

TAをskは複数の2xストリングを格納できることです。私たちは「こんにちは」である入力文字列、および私たちは「emptyString」に入れcとし、「世界」で、別のものを持っている。この場合、

myCode :: String -> String -> MyType ->MyType 
myCode a b c = (\x -> b) 

:これが私たちの現在の考えです。

a = (myCode "Hello" "World" emptyString) "" 

私たちは「A」入力に「世界」を取得する:我々は、コンソールで次のように入力するときので これは、1つの文字列のために働きます。今は難しい部分です:私たちは、これらのいくつかを保存することができます(これは別のタスクであり、現在は必要ありません)。

b = (myCode "1" "2" a) "Hello" "World" emptyString "") 

この関数は「」と、この内の「emptyString」として保存された「B」で呼ぶだろう:私たちは別の変数を宣言するときに「」今使用することができるかもしれないと思いました。 あなたが推測しているかもしれませんが、動作しません!そして、私たちは今からどのように続けていくのか、本当に失われています。

あなたがこの部分に到達したとき、私たちのタスクの複雑な説明を理解する時間がかかりました。

事前にお寄せいただきありがとうございます!

+1

「ストア」とは"2x Strings"とは何ですか? –

+2

これは「電話帳」練習の難読化ですか? –

+1

最近の質問と同じ割り当てのようですhttp://stackoverflow.com/questions/41753366/identifying-input-values-for-which-function-does-not-generate-a-specific-outpu – amalloy

答えて

1

コメントの中のamalloyによってリンクされた質問から、パラダイムのような継続的な通過スタイルに基づいて電話帳を作成しようとしているようです。

基本的には、何が

myCode :: String -> String -> MyType -> MyType 

はあなたがタイプMyTypeのあるデータdat = myCode a b pbの一部を、生成することであるあなたのタイプのために起こることになっています。したがってdats :: Stringと照会すると、別のStringが出力されます。あなたは、定義に

dat s = myCode a b pb s 

それを展開する場合dat sの動作では、3つの文字列、ab、そして何pb sリターンへのアクセス権を持っています。 absで何かを実行するか、pbへの道を押して、それを処理させて再帰的に機能を構築します。

あまりにも多くを与えることなくこれが役立つことを願っています。

+0

だから簡単にタスクを推測する - 共通する必要があります:)あなたの助けを大変ありがとう – Fapprentice

関連する問題