[過去ログ]
関数型プログラミング言語Haskell Part33 (1002レス)
関数型プログラミング言語Haskell Part33 http://mevius.5ch.net/test/read.cgi/tech/1581326256/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
95: デフォルトの名無しさん [] 2020/03/27(金) 20:21:43.46 ID:inQsOLrL >>93 自分も>>74の理解で問題ないと思うんだよ http://mevius.5ch.net/test/read.cgi/tech/1581326256/95
237: デフォルトの名無しさん [] 2020/04/19(日) 01:35:32.46 ID:WM8Q0HWB [状態モナド](https://wiki.haskell.org/State_Monad)を [随伴](https://en.wikipedia.org/wiki/Adjoint_functors) on Rails に乗せてみる。 ``` code type W x a b = (a, x) -> (b, x) type S x a b = a -> x -> (b, x) in_away :: W x c d -> W x b c -> W x a b -> W x a d in_away cd bc ab = cd . bc . ab in_home :: S x c d -> S x b c -> S x a b -> S x a d -- in_home cd bc ab = to_home $ in_away (to_away cd) (to_away bc) (to_away ab) where -- in_home cd bc ab = ext cd . ext bc . ab where in_home cd bc ab a = new a %>>=% ab %>>=% bc %>>=% cd where (%>>=%) = flip ext ext = to_home_fmap . to_away new = to_home id to_home_fmap = (.) to_home = curry to_away = uncurry ``` `to_home`が[記事](https://en.wikipedia.org/wiki/Adjoint_functors)での`Phi` に、`ext`が[Kleisliのスター](https://en.wikipedia.org/wiki/Kleisli_category) に対応する。`in_away`は通常の関数の合成で、`in_home`はそれを黒魔術に 翻訳している。 [継続モナド](https://wiki.haskell.org/Continuation)も随伴で書ける。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/237
310: デフォルトの名無しさん [] 2020/05/04(月) 16:45:39.46 ID:R0S0SfqY ocamlはせっかく盛り返してたのに失言でだいなし http://mevius.5ch.net/test/read.cgi/tech/1581326256/310
323: デフォルトの名無しさん [sage] 2020/05/23(土) 00:35:45.46 ID:PUmkxvlF 次のように、一つのモナドを遅延的に無限に評価できる関数 repM は定義できるでしょうか? repM :: (Monad) => m a -> m [a] xs <- repM (return 1) print $ take 3 xs -- [1, 1, 1] ys <- take 2 <$> repM (return 1) print ys -- [1, 1] http://mevius.5ch.net/test/read.cgi/tech/1581326256/323
556: デフォルトの名無しさん [sage] 2020/11/03(火) 11:32:34.46 ID:WdkpFDBO 一応、Num (f a)は導出できるけど、それで定義した(+)だと 交換則(x + y = y + x)が成り立つ保証がないからじゃないかねぇ (パーサの順番を入れ替えた場合を考えるとわかりやすい) {-# LANGUAGE FlexibleInstances #-} instance (Num a, Applicative f) => Num (f a) where x + y = (+) <$> x <*> y x * y = (*) <$> x <*> y abs x = abs <$> x signum x = signum <$> x negate x = negate <$> x fromInteger n = pure $ fromInteger n http://mevius.5ch.net/test/read.cgi/tech/1581326256/556
673: デフォルトの名無しさん [sage] 2021/01/21(木) 21:44:08.46 ID:AWFMWVQb ・Haskellが欲しかったポジションはなんかPythonにとられてしまった http://mevius.5ch.net/test/read.cgi/tech/1581326256/673
679: デフォルトの名無しさん [sage] 2021/01/23(土) 13:17:02.46 ID:u7XOzuV6 >>665 ListT を使えばと思ったけどだめだった。 ・参考 https://blog.mudatobunka.org/entry/2018/01/03/233314 ・残骸 module Rand2 where -- stack install list-t -- stack exec ghci import Control.Monad.IO.Class ( liftIO ) import ListT ( ListT, toList ) import System.Random ( Random(randomIO, randomRIO) ) t1 :: ListT IO Int t1 = return 3 t2 :: ListT IO Int t2 = liftIO (randomIO :: IO Int) t3 :: ListT IO [Int] t3 = repeat <$> t2 output :: ListT IO [Int] -> IO () output t3 = do li0 <- toList t3 print $ take 10 $ head li0 http://mevius.5ch.net/test/read.cgi/tech/1581326256/679
692: デフォルトの名無しさん [sage] 2021/01/25(月) 13:33:07.46 ID:/TZZteD8 安価ミス>>688 http://mevius.5ch.net/test/read.cgi/tech/1581326256/692
750: デフォルトの名無しさん [sage] 2021/02/18(木) 09:31:00.46 ID:8Wc99cSo あ、イヤ違う 勘違いでした すいません http://mevius.5ch.net/test/read.cgi/tech/1581326256/750
911: デフォルトの名無しさん [sage] 2021/09/27(月) 18:11:25.46 ID:XYchXu+H >>910 mutable stateの排他制御をしてないから複数のスレッドで実行するとまずいことが起こるかもしれない、ってことじゃないの? 排他制御 https://ja.wikipedia.org/wiki/%E6%8E%92%E4%BB%96%E5%88%B6%E5%BE%A1 http://mevius.5ch.net/test/read.cgi/tech/1581326256/911
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.039s