[過去ログ] 関数型プログラミング言語Haskell Part32 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
175(1): 2019/02/23(土)00:41 ID:RiBir1w3(1/15) AAS
カリー化関数の意図がわからん
sum_of :: (Integer -> Integer, Integer, Integer) -> Integer
sum_of (f, n, m)
| n > m = 0
| otherwise = f n + sum_of (f, n + 1, m)
これはわかる
sum_of' :: (Integer -> Integer) -> Integer -> Integer -> Integer
sum_of' f n m
| n > m = 0
| otherwise = f n + sum_of' f (n + 1) m
省3
177: 2019/02/23(土)02:59 ID:RiBir1w3(2/15) AAS
>>176
(*2)の意味わからなくて前後調べたら演算子をカリー化できるとかあって
やっと意味わかったありがとう
しかも例題の先の先の方に有効な利用法書いてあったけど
なんかどうもサイトの進め方と合わないなー・・変えるかー
こんなこと書いてもなんか意味あんのだから何なんみたいな悶々パターンが多すぎる
とても簡単ですとか書いてあったら相当難しいフラグ確定
考え方が違うんだろうな
180: 2019/02/23(土)13:04 ID:RiBir1w3(3/15) AAS
しかしいいサイト全然ないなどうしたもんか
お前らどうやって習得したのよこんな難解な言語
183(1): 2019/02/23(土)17:11 ID:RiBir1w3(4/15) AAS
Prelude> let foo n = ¥x -> x * n
Prelude> :t foo
foo :: Num a => a -> a -> a
Prelude> let foo10 = foo 10
Prelude> :t foo10
foo10 :: Integer -> Integer
Prelude> foo10 10
100
Prelude> foo10 20
200
省12
184: 2019/02/23(土)17:12 ID:RiBir1w3(5/15) AAS
>>183のクロージャの説明がさっぱりわからない
関数を生成する関数を簡単に作ることができるって言ってるんだけど
やってることは定義を繰り返してるだけでちっとも生成してない
どういう意味で関数を生成したって言ってるんだろ・・
Stringで関数生成してevalで評価しましただったらわかるんだけど、これ違うよね
それともhaskellの場合は関数定義は関数生成としているのか・・わからん
一体これは何が言いたいのか・・
実はどうでもいいことで気にしなくてもいいなら納得するんだけども
187: 2019/02/23(土)17:46 ID:RiBir1w3(6/15) AAS
>>186
そうじゃなくてこれ関数定義だけで生成なんかしてないよね?って話
ぱっと見パスしてもいいようなどうでもいいことにも見える
そうであれば次に行く
どうもHaskellは納得いかないことがあまりにも多いんだ
文化の違いなのか考え方の違いなのかわからんけど
CかObj-CかSmalltalk-80/VisualWorksで
189(1): 2019/02/23(土)18:05 ID:RiBir1w3(7/15) AAS
>>188
foo10は結局のところ ¥x->x*n を呼び出してるだけじゃないの?
¥x->x*10って関数を生成してないよね?
そういうことではない?
191: 2019/02/23(土)18:12 ID:RiBir1w3(8/15) AAS
>>190
PythonならBlenderで頂点やマテリアル抽出するときに必須だったから使ったことあるけど
インデント縛りで胃が溶けそうだった
正直もうやりたくない・・
193: 2019/02/23(土)18:28 ID:RiBir1w3(9/15) AAS
>>192
わかった!
無名関数で定義されてるからできるってことかー
納得できたありがとう
次行ってみる
195: 2019/02/23(土)18:33 ID:RiBir1w3(10/15) AAS
>>194
C++は全く知らないのでそっちはなんとも
196(1): 2019/02/23(土)18:51 ID:RiBir1w3(11/15) AAS
早速詰まった何を言ってるのかわからん
一般に、関数を呼び出す場合、関数を評価するための環境は空リストです。
最初に、引数がこの環境に追加されます。let で定義される局所変数もこの環境に追加されます。
もしも、環境に該当する変数が存在しない場合は大域変数を参照します。
たとえば、foo 5 と呼び出すと環境は次のようになります。
foo 5 ==> 環境 : [(n, 5)]
ghciで実行
省11
198: 2019/02/23(土)19:34 ID:RiBir1w3(12/15) AAS
>>197
そっかわかったありがとう!
関数の合成もすぐわかったのでさらに次行ってみる
199: 2019/02/23(土)20:14 ID:RiBir1w3(13/15) AAS
データ型の定義まで来た
なんというかやっぱりこのサイトこれからhaskell入門の人にはどうでもいい余計なこと書きすぎなんじゃ・・
と思った
200(2): 2019/02/23(土)21:08 ID:RiBir1w3(14/15) AAS
do構文がIO型だからこのように書ける・・というのがどうもしっくりこないけど
都合上こうするしかなかったってだけの話で特別な意味はないのかな
calc :: IO ()
calc = do
putStr "Input Integer1 > "
x <- readLn :: IO Integer
putStr "Input Integer2 > "
y <- readLn :: IO Integer
let a = x + y
b = x - y
省8
202(1): 2019/02/23(土)21:25 ID:RiBir1w3(15/15) AAS
納得しないと進まないタイプなので
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.034s