[過去ログ]
関数型プログラミング言語Haskell Part33 (1002レス)
関数型プログラミング言語Haskell Part33 http://mevius.5ch.net/test/read.cgi/tech/1581326256/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
23: デフォルトの名無しさん [] 2020/02/13(木) 17:49:26.84 ID:0eJoVY/8 >>9 Rubyだと def diagonals(a) m = a.size n = a[0].size a.flatten.group_by.with_index{|v,i| i/m+i%n}.values end http://mevius.5ch.net/test/read.cgi/tech/1581326256/23
151: デフォルトの名無しさん [sage] 2020/04/02(木) 06:33:57.84 ID:6/i0fPdP >>148 特別なことはなく、ネットや本で学んだよ 例えば ・Thinking wih Types 型レベルプログラミングを学んだ https://leanpub.com/thinking-with-types ・Optics By Example lensに代表されるopticsを学んだ https://leanpub.com/optics-by-example ・Hexagonal architecture Haskell & DDD でアプリを作るパターンの一つを学んだ https://blog.ploeh.dk/2016/03/18/functional-architecture-is-ports-and-adapters/ ・Effect system IOを安全に扱う方法を学んだ (正確にはモナドの合成を分かりやすく扱う方法) DDDによるアプリ制作においてさっきのが戦略とすれば、こっちは戦術 http://okmij.org/ftp/Haskell/extensible/exteff.pdf ライブラリもいくつかある あと、Redditの投稿を追いかけていれば色々学べる https://www.reddit.com/r/haskell/ と言うか、紹介しきれないほどの情報がネットに溢れているんだが http://mevius.5ch.net/test/read.cgi/tech/1581326256/151
328: デフォルトの名無しさん [sage] 2020/05/23(土) 12:08:02.84 ID:eKnPDQS2 module Main where import Control.Monad.IO.Class (MonadIO, liftIO) import Control.Monad.Trans (lift) import Data.Conduit (ConduitT, runConduit, yield, (.|)) import qualified Data.Conduit.List as CL repIO :: (Monad m, MonadIO m) => IO () -> ConduitT () () m () repIO io = do x <- liftIO io yield x >> repIO io repM :: Monad m => m o -> ConduitT i o m r repM m = do x <- lift m yield x >> repM m main :: IO () main = do x1 <- runConduit $ repIO (getLine >>= print) .| CL.take 3 print x1 -- [(),(),()] x2 <- runConduit $ repM (getLine >>= print) .| CL.take 3 print x2 -- [(),(),()] let x3 = runConduit $ repM [1,2] .| CL.take 3 print x3 -- [[1,1,1],[1,1,2],[1,2,1],[1,2,2],[2,1,1],[2,1,2],[2,2,1],[2,2,2]] let x4 = runConduit $ repM [] .| CL.take 3 print (x4 :: [[Int]]) -- [] let x5 = runConduit $ repM (Just 1) .| CL.take 3 print x5 -- Just [1,1,1] let x6 = runConduit $ repM Nothing .| CL.take 3 print (x6 :: Maybe [Int]) -- Nothing http://mevius.5ch.net/test/read.cgi/tech/1581326256/328
491: デフォルトの名無しさん [sage] 2020/09/09(水) 13:33:56.84 ID:Ss6OMKhc Haskellで出てくる演算子の読み方一覧ってないですか? http://mevius.5ch.net/test/read.cgi/tech/1581326256/491
613: デフォルトの名無しさん [] 2020/12/17(木) 17:53:27.84 ID:9eI2x+Uu Haskellでx = x + 1をIORef使わず擬似的に再現。 (実際には代入では無く、結果をラムダ式の同名の変数に渡してるだけ) main = do let x = 0 print x x <- inc x print x x <- inc x print x inc n = return (n + 1) モナド式の書き方だとこうなる。 main = do let x = 0 in print x >> inc x >>= \x -> print x >> inc x >>= \x -> print x inc n = return (n + 1) さらに>>=演算子を()で囲んで関数にするとこうなる。 main = (>>=) ((>>=) (do let x = 0 in print x >> inc x) (\x -> print x >> inc x)) (\x -> print x) inc n = return (n + 1) http://mevius.5ch.net/test/read.cgi/tech/1581326256/613
682: デフォルトの名無しさん [sage] 2021/01/24(日) 12:14:30.84 ID:3w4a632B >>680 おお、できるんですか!? すげー 残念ながらいまListT使えないので環境整理してやってみます http://mevius.5ch.net/test/read.cgi/tech/1581326256/682
703: デフォルトの名無しさん [sage] 2021/02/04(木) 22:24:53.84 ID:w5MK0dgi >>702 ありがとうございます 参考にさせていただきます そうですね もう一つ可読性が欲しい感じがします 元々の問題意識としては私は可読性の高いコードが要求されることが多いのです 例えばFibonacci数列であれば f n = ( f $ n -1 ) + ( f $ n - 2 ) に可読性においてまさるものはないのですが、もちろんこれでは遅くて使い物になりません なので実用性も多少はなりとも求めるならある程度は可読性を犠牲にせざるを得ないのですが、どういう方法がいいのだろうというのがテーマなのです でたまたまFibonacciの場合に f = 0 : 1 : ( zipWith ( + ) f $ tail f ) というのを見つけてコレ中々いいなと、dpで計算してるのに“メモ”をするための不要な手続きを書く必要がなく、Haskellの“call by need”の機能をうまく利用してdp計算させてるところにちょっと唸ったもので でどれくらいコレでいけるのかなと二重数列をやってみたらうまくいかなくて、どうしたもんかなと まぁコレはしょうがないのかもしれませんけど http://mevius.5ch.net/test/read.cgi/tech/1581326256/703
714: デフォルトの名無しさん [sage] 2021/02/07(日) 10:58:25.84 ID:nblMEePQ 久しぶりにHaskell(Servant)触ってみたけど 相変わらず呪文のようなテンプレートマクロとかコンパイル通すためだけの幽霊型とか表に出てきているのね こういうの後ろに隠した実装がほちい(・ัω・ั) http://mevius.5ch.net/test/read.cgi/tech/1581326256/714
799: デフォルトの名無しさん [sage] 2021/04/06(火) 20:30:15.84 ID:O0PfwEM6 曖昧さ無く無い?なんでダメなんだっけ http://mevius.5ch.net/test/read.cgi/tech/1581326256/799
829: デフォルトの名無しさん [sage] 2021/05/22(土) 13:34:14.84 ID:hkOb3/u2 Haskellのは単にシングルスレッドで回収してるだけだぞ http://mevius.5ch.net/test/read.cgi/tech/1581326256/829
920: デフォルトの名無しさん [sage] 2021/10/06(水) 01:58:31.84 ID:3ymQugFf >>919 return 1 getLine は (return 1) getLine だから、 (return 1) が関数(a->b) じゃないと型が合わないんじゃないかな? http://mevius.5ch.net/test/read.cgi/tech/1581326256/920
955: デフォルトの名無しさん [sage] 2021/11/17(水) 12:50:22.84 ID:f9gix7Cx ちなみに自分は、自分の価値観に反してるから却下すべきだと言ってるのではなくて、 どうしてこういう構造が正しいの?実際の理論やコードでの利用例に照らしてどんな利点や意味があるのと知りたいだけです。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/955
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.041s