[過去ログ]
関数型プログラミング言語Haskell Part31©2ch.net (1002レス)
関数型プログラミング言語Haskell Part31©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1506447188/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
1: デフォルトの名無しさん 転載ダメ©2ch.net [ageteoff] 2017/09/27(水) 02:33:08 ID:2XAqPuH2 関数型プログラミング言語 Haskell について語るスレです。 haskell.org (公式サイト) https://www.haskell.org/ 前スレ 関数型プログラミング言語Haskell Part30 http://mevius.2ch.net/test/read.cgi/tech/1484491434/ http://mevius.5ch.net/test/read.cgi/tech/1506447188/1
973: デフォルトの名無しさん [sage] 2019/01/23(水) 00:07:49.58 ID:UhkibQh6 既出かも知れませんが 「 木 (tree) 」の読み方について質問です。 化学では「塩」をシオではなくエンと読む様に 「 木 」もモクやボクと読むのか 訓読みでキと読むのか確認したいです。 http://mevius.5ch.net/test/read.cgi/tech/1506447188/973
974: デフォルトの名無しさん [sage] 2019/01/23(水) 00:12:29.03 ID:e48tmJNP >>973 き https://ja.wikipedia.org/wiki/%E6%9C%A8%E6%A7%8B%E9%80%A0_(%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0) https://ja.wikipedia.org/wiki/%E6%9C%A8_(%E6%95%B0%E5%AD%A6) http://mevius.5ch.net/test/read.cgi/tech/1506447188/974
975: デフォルトの名無しさん [sage] 2019/01/23(水) 00:18:53.14 ID:UhkibQh6 >>974 了解です。 薔薇木をバラキと読むのに違和感があったので 確認してみたかったです。 http://mevius.5ch.net/test/read.cgi/tech/1506447188/975
976: デフォルトの名無しさん [sage] 2019/01/23(水) 00:19:35.51 ID:Ysgk2cll その質問は既出じゃないと思う http://mevius.5ch.net/test/read.cgi/tech/1506447188/976
977: デフォルトの名無しさん [sage] 2019/01/23(水) 00:27:46.89 ID:UhkibQh6 そうでしたか。 しかし良く考えてみたら 薔薇木(ばらぼく)って同性愛雑誌みたいでした。 http://mevius.5ch.net/test/read.cgi/tech/1506447188/977
978: デフォルトの名無しさん [sage] 2019/01/23(水) 12:32:21.82 ID:8dbvKkbn 薔薇刑 ← 読めない http://mevius.5ch.net/test/read.cgi/tech/1506447188/978
979: デフォルトの名無しさん [] 2019/01/23(水) 15:57:01.39 ID:I7vJASel 葉は 枝えだ 木き 根ね http://mevius.5ch.net/test/read.cgi/tech/1506447188/979
980: デフォルトの名無しさん [sage] 2019/01/23(水) 16:07:41.36 ID:OFN8YGgg 男根おとこね http://mevius.5ch.net/test/read.cgi/tech/1506447188/980
981: デフォルトの名無しさん [sage] 2019/01/24(木) 00:53:14.43 ID:cVpDBcbd kotlin以下w kotlinってあれだろ鳥箱の中で争わせて、強いものが… キャー 【IT】習得したいプログラミング言語、したくない言語 プログラミング言語実態調査 2018 https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00501/111200004/ http://mevius.5ch.net/test/read.cgi/tech/1506447188/981
982: デフォルトの名無しさん [] 2019/01/24(木) 10:45:53.06 ID:TePOwsZ1 擬人化してくれ http://mevius.5ch.net/test/read.cgi/tech/1506447188/982
983: デフォルトの名無しさん [sage] 2019/01/24(木) 17:57:50.91 Haskell は初期学習コストが高すぎるのと、圏論イキリおじさんが煙に巻くので近寄りがたい雰囲気を醸している http://mevius.5ch.net/test/read.cgi/tech/1506447188/983
984: デフォルトの名無しさん [sage] 2019/01/24(木) 18:25:57.35 ID:wii/ewut ちょっと勉強したけど、なんか仕様がコロコロ変わってるような気がして、 本格的に手を出しにくい http://mevius.5ch.net/test/read.cgi/tech/1506447188/984
985: デフォルトの名無しさん [sage] 2019/01/24(木) 18:27:39.45 ID:tqh7mtUe mtl パッケージの Control.Monad.Reader モジュールで MonadReader クラスが定義されています。 この定義で、なぜ m -> r などという制約が課せられているのでしょうか。 class Monad m => MonadReader r m | m -> r where この制約がないと何が不都合なのでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1506447188/985
986: デフォルトの名無しさん [sage] 2019/01/24(木) 23:18:18.45 ID:9BqsZZXL 関数従属を消すとコンパイルが通らなくなる例 https://ideone.com/sdajAE 具体的には instance Monad m => MonadReader r (ReaderT r m) の他に instance Monad m => MonadReader () (ReaderT r m) もあり得るから MonadReaderに関数従属がないとReaderTの型クラスのようには扱えない http://mevius.5ch.net/test/read.cgi/tech/1506447188/986
987: デフォルトの名無しさん [sage] 2019/01/25(金) 00:43:33.65 m → r mを決めると自動的にrも決まるという意味だろうか いまモナドを、ReaderT r m と決めた だからそこで使われる r が自動的にMonadReader r 〜の r となるのだ このように素人目に推測できる http://mevius.5ch.net/test/read.cgi/tech/1506447188/987
988: デフォルトの名無しさん [] 2019/01/25(金) 08:16:02.28 ID:iIPgsGqp >>983 モナド使うだけなら圏論要らんけどな。 自作するなら圏論要るけど、それはHaskellが難しいんじゃなくて圏論(とか数学)が難しいだけで。 自作しないでただのプログラミング言語として使う分には難しくない。 (どこまで抽象化できるか研究してる人が多いから難しく感じるだけ) >>=演算子はモナドを受け取ってモナドを返す演算子と覚えておけば良い。 (だからモナド受け取って、モナドの中の値を取り出して処理したらreturnでモナドに包むか、モナド返す関数に引数として渡す) returnとかclassとか、普通の言語にも同じ用語が出るからって、同じ意味と考えないほうがいい。 まっさらな頭で挑むべし。 (そういう意味で初心者の方が理解が早い) http://mevius.5ch.net/test/read.cgi/tech/1506447188/988
989: デフォルトの名無しさん [sage] 2019/01/25(金) 18:42:51.74 ID:sjWwXpoO >>986 例は理解できました。 話も、 > 具体的には instance Monad m => MonadReader r (ReaderT r m) の他に > instance Monad m => MonadReader () (ReaderT r m) もあり得るから ここまでは理解できたのですが、 > MonadReaderに関数従属がないとReaderTの型クラスのようには扱えない ごめんなさい、この意味がまだよく分かりません。 MonadReaderに関数従属がないと、 ReaderT型がMonadReaderクラスのインスタンスとして定義できない、 という事でしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1506447188/989
990: デフォルトの名無しさん [sage] 2019/01/25(金) 20:09:29.73 ID:RwHnV4/s C++のtemplateのような制約がないダックタイピングに不都合を実感した者は理解が早い 初心者より早い http://mevius.5ch.net/test/read.cgi/tech/1506447188/990
991: デフォルトの名無しさん [sage] 2019/01/25(金) 20:13:55.21 ID:DHFZGKPe >>989 型推論において instance Monad m => MonadReader (ReaderT r m) のように扱えると言いたかっただけです 上のコードが意味することを言い換えたつもりだったんですが 言葉としては Monad m => ReaderT r m をMonadReaderのインスタンスのように扱える とした方が正しかったですね http://mevius.5ch.net/test/read.cgi/tech/1506447188/991
992: デフォルトの名無しさん [sage] 2019/01/26(土) 19:27:32.21 ID:2lj1Pdko >>991 言葉としては Monad m => ReaderT r m をMonadReaderのインスタンスのように扱える > とした方が正しかったですね まだよく分からないです。 これは、関数従属があるからこそ Monad m => ReaderT r m をMonadReaderのインスタンスのように扱える、 ということですよね。 逆に言えば、関数従属がないとそのそうにできない、と。 試しに MonadReader クラスと ReaderT 型を mtl のソースと同じように自作してみました。 (あれは実質 transfirmers の re-export なので、tranformers のソースのように、が正しいですが) すると、MonadReader クラスの関数従属がなくても、 ReaderT 型を MonadReader クラスのインスタンスにできてしまいました。 エラーなくビルドでき、同じように使うことができました。 どういうことでしょうか。 コンパイラは ghc-8.6.3 です。 http://mevius.5ch.net/test/read.cgi/tech/1506447188/992
993: デフォルトの名無しさん [sage] 2019/01/26(土) 20:36:51.56 ID:YCYcr/Gx >>992 instance Monad m => MonadReader r (ReaderT r m) この場合インスタンスなのは r と Monad m => ReaderT r m の組み合わせだと理解しているんですが いずれにしても言いたかったのは前の方の r を無視して扱えるようになるということで なにか間違ってるようなら忘れてもらって構わないです http://mevius.5ch.net/test/read.cgi/tech/1506447188/993
994: デフォルトの名無しさん [sage] 2019/01/27(日) 14:38:45.77 ID:joZtszNb UndecidableInstancesだからでは? 自分も理解しきれてないけど http://mevius.5ch.net/test/read.cgi/tech/1506447188/994
995: デフォルトの名無しさん [sage] 2019/01/27(日) 20:30:51.01 ID:wGWJPOk3 質問ではなく否定ができる者は理解が早い どういうことでしょうか、ではなく、ここが間違っているのを知ってる俺は正しい その方が圧倒的に早い http://mevius.5ch.net/test/read.cgi/tech/1506447188/995
996: デフォルトの名無しさん [sage] 2019/01/28(月) 02:18:47.10 ID:UwyAz0OY すいません。 初心者でこんなこと聞くのもお恥ずかしいんですが、なにをどうググっても情報がでてこないのでお聞きします。 いま話題になってる>>985さんの class Monad m => MonadReader r m | m -> r where が全く意味すらわかりません。 “class” が型class を定義する宣言で “Monad m” が “m は Monad のインスタンスであるときに” を意味してるんですよね? そのとき “型 MonadReader r m” が定義されるという風に読めばいいんですよね? で、その後の “| m -> r” がわかりません。 >>985さんは >この定義で、なぜ m -> r などという制約が課せられているのでしょうか。 と言われてますが、”制約” とはなんですか? こんな質問して話の腰を折ってはいけないとなんとか自力でググりまくったんですが全くこの記述の意味を理解する情報を発見することはできませんでした。 載っている参考文献でも結構ですのでどなたか教えていただけませんか? http://mevius.5ch.net/test/read.cgi/tech/1506447188/996
997: デフォルトの名無しさん [sage] 2019/01/28(月) 12:06:40.91 ID:kUDYAe70 http://www.kotha.net/ghcguide_ja/latest/type-class-extensions.html#functional-dependencies https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#functional-dependencies https://github.com/shiatsumat/wiwinwlh-jp/wiki/%E5%9E%8B%E6%97%8F http://mevius.5ch.net/test/read.cgi/tech/1506447188/997
998: デフォルトの名無しさん [sage] 2019/01/28(月) 12:15:36.89 ID:LeZdguT6 >>996 私が元の質問者ですが、気にしないで質問なさってください。 >> を意味してるんですよね? ここまでは良いと思いますが、 >> そのとき “型 MonadReader r m” が定義>> されるという風に読めばいいんですよね? 違います。 定義しているのは型ではなく型クラスです(細かいですが大事なところなので)。 それと | m -> r は、>>986 でもチラッと名前が出てきましたが、日本語では「関数従属」です。 「haskell 関数従属」でググるとでてきます。 簡単に言えば、| m -> r はこのクラスのインスタンス型において、 型変数 m の型が具体的に決まれば、型変数 r の具体的な型が「一意に」推論できなければならない、 という制約です。 例えば class TTT a b | a -> b という宣言があると、 TTT Int String というインスタンス型と TTT Int Double というインスタンス型は「同時には」存在できません。 a の型が Int なのに、b の型が String の場合のインスタンス型も Double の場合のインスタンス型も定義されているからです。 逆に、TTT String Int と TTT Double Int はOKです。 関数従属になんら違反していません。 | x -> y の x と y の並び順番に気をつけてください。 http://mevius.5ch.net/test/read.cgi/tech/1506447188/998
999: デフォルトの名無しさん [sage] 2019/01/28(月) 12:17:56.53 ID:H3y/QtCH すみません質問いいですか? http://mevius.5ch.net/test/read.cgi/tech/1506447188/999
1000: デフォルトの名無しさん [sage] 2019/01/28(月) 12:39:33.26 ID:MTZ0KVk9 いいよ http://mevius.5ch.net/test/read.cgi/tech/1506447188/1000
1001: 1001 [] ID:Thread このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 488日 10時間 6分 25秒 http://mevius.5ch.net/test/read.cgi/tech/1506447188/1001
1002: 1002 [] ID:Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ https://premium.5ch.net/ ▼ 浪人ログインはこちら ▼ https://login.5ch.net/login.php http://mevius.5ch.net/test/read.cgi/tech/1506447188/1002
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.024s