[過去ログ]
関数型プログラミング言語Haskell Part33 (1002レス)
関数型プログラミング言語Haskell Part33 http://mevius.5ch.net/test/read.cgi/tech/1581326256/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
567: デフォルトの名無しさん [sage] 2020/11/11(水) 19:20:13.76 ID:qheOKxfd 正格評価について質問です ひとつの引数しかない関数 f を正格評価するときには f $! x でよいようですが2引数の場合はどうするんですか? ( f $! x ) $! y で x, y を先に展開してくれますか? 良さげなんですがどう確かめたものやら なんか正格評価と遅延評価で格段に計算量が変わる f の例ってありますか? http://mevius.5ch.net/test/read.cgi/tech/1581326256/567
574: デフォルトの名無しさん [sage] 2020/11/16(月) 23:33:39.07 ID:bCg5e61i >>567 もうとっくに解決したかもしれませんが、評価の順は trace 関数でも確認できます。 import Debug.Trace g :: Int -> Int -> Int g x y = trace ("g") (x + y) main :: IO () main = do let a = trace ("a") 1 let b = trace ("b") 2 let c = (g $! a) $! b putStrLn $ show c これを実行すれば、b a g 3 の順に出力されます。 正格評価されていると言えます。 ちなみに、($!) を ($) に変えれば、g a b 3 の順に出力されます。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/574
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.040s