[過去ログ]
関数型プログラミング言語Haskell Part33 (1002レス)
関数型プログラミング言語Haskell Part33 http://mevius.5ch.net/test/read.cgi/tech/1581326256/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
380: デフォルトの名無しさん [] 2020/08/16(日) 18:14:55.92 ID:tHIsB9jz Haskellの本を読んでいると静的型付けだとか出てきます。 単にHaskellの仕様を理解するだけでなくもっと深く、どういう考え方でHaskellというプログラミング言語が設計されたのかにも興味があります。 プログラミング言語論みたいな本でおすすめの本はないでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1581326256/380
415: デフォルトの名無しさん [] 2020/08/22(土) 13:19:16.92 ID:g0O87mtN ``` code #{-# LANGUAGE FunctionalJupyter #-} import IPython.display as display; def none (node, edge): f = lambda col, a: {key : (row, col) for row, key in enumerate (a)}; nodes = {}; for val in [f (j, a) for j, a in enumerate (node)]: nodes.update (val); edges = []; for xy in edge: edges += [(nodes [x], nodes [y]) for x, y in xy.items ()]; node_out = r"""<text class='clazz' x='{x}' y='{y}'>{z}</text>"""; edge_out = r"""<line class='clazz' x1='{x_0}' y1='{y_0}' x2='{x_1}' y2='{y_1}'/>"""; out = ''; w, h, dw = 100, 20, 20; for key, val in nodes.items (): out += node_out.format (x = w * val [1], y = h * val [0], z = key); for a, b in edges: out += edge_out.format (x_0 = w * a [1] + dw, y_0 = h * a [0], x_1 = w * b [1] - dw, y_1 = h * b [0]); style = r"""<style> text.clazz { dominant-baseline: middle; text-anchor: middle; } line.clazz { stroke: black; fill: none; } </style> """.strip (); svg = f"""<svg width='400' height='300' viewBox='{-20} {-20} {len (node) * w + 20} {max (map (len, node)) * h + 20}'>{out}</svg>"""; display.display (display.HTML (style + svg)); return None; none (*out); ``` http://mevius.5ch.net/test/read.cgi/tech/1581326256/415
447: デフォルトの名無しさん [sage] 2020/08/30(日) 11:24:49.92 ID:uCpf8zkM エラーメッセージは以下です 何がダメかどなたかわかりませんか? Haskell Online Compiler [ghc-8.4.4] Copyright (c) The University of Glasgow Compiling your program... [1 of 1] Compiling Main ( prog.hs, prog.o ) prog.hs:23:25: error: • No instance for (RealFloat (Ratio Integer)) arising from a use of ‘+’ • In the second argument of ‘(///)’, namely ‘((z :+ w) + (x :+ y))’ In the second argument of ‘($)’, namely ‘(x :+ y) /// ((z :+ w) + (x :+ y))’ In a stmt of a 'do' block: print $ (x :+ y) /// ((z :+ w) + (x :+ y)) | 23 | print $ (x:+y) /// ((z:+w) + (x:+y)) | ^^^^^^^^^^^^^^^ http://mevius.5ch.net/test/read.cgi/tech/1581326256/447
509: デフォルトの名無しさん [] 2020/09/13(日) 21:12:53.92 ID:Tso/1gLY ふ?何言ってんの 可換モノイドの圏は集合の圏の [部分圏](https://ncatlab.org/nlab/show/subcategory)だが、 集合の圏ではない。したがって、分数モナドは、 Haskellの`Monad`のインスタンスにならない。 例えば、次のような実装を考えると、 ``` code newtype Bunsu a = Bunsu { runBunsu :: (a, a) } deriving (Show, Functor) instance (Eq a, Semigroup a) => Eq (Bunsu a) where ... instance (Semigroup a) => Semigroup (Bunsu a) where ... instance (Monoid a) => Monoid (Bunsu a) where ... instance (Monoid a) => Group (Bunsu a) where ... bunsu_pure :: (Monoid a) => a -> Bunsu a bunsu_pure = ... ``` 縛り`Monoid a`が邪魔をして、`Bunsu`は`Applicative`のインスタンスに できない。それでも、通常の関数の形でなら`bunsu_pure`と`bunsu_join`は 書けるので、モナド則のチェックはできる。ただし、`Bunsu`は、 可換モノイドの圏でのモナド則は満たすが、集合の圏でのモナド則は満たさない。 質問への直接の答えは避けるが、可換モノイドの圏で考えないと 答えは得られない。 http://mevius.5ch.net/test/read.cgi/tech/1581326256/509
534: デフォルトの名無しさん [sage] 2020/11/01(日) 08:58:44.92 ID:Srz4hpJo 1) http://walk.northcol.org/haskell/operators/#_%E4%B8%AD%E7%BD%AE%E3%81%A8%E5%89%8D%E7%BD%AE%E3%81%AE%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88 2) このままだと対応する値が存在しないので、少し書き換える map' f xs = foldr (\x a -> f x : a) [] xs xはxsの各要素、aは最後の要素では[]で、 それ以前は後ろの要素に(\x a -> f x : a)を適用した結果 http://mevius.5ch.net/test/read.cgi/tech/1581326256/534
696: デフォルトの名無しさん [sage] 2021/01/27(水) 13:52:31.92 ID:fGEABlaN こういう時は自分の考えに自信を持つことも必要 誰かがエラーメッセージを見ている(または見ていない)のを見たからといって簡単に考えを変えない方がいい http://mevius.5ch.net/test/read.cgi/tech/1581326256/696
833: デフォルトの名無しさん [sage] 2021/05/29(土) 14:13:39.92 ID:SnGl3AHf win10でstackとかghcそのものは正常に入るんたけどパッケージのコンパイルが絡んでくるとどうも文字コードが原因でコケる LANG=asciiにすると挙動が変わってくるんだけど、何にしとくのが正解なんだろ http://mevius.5ch.net/test/read.cgi/tech/1581326256/833
902: デフォルトの名無しさん [sage] 2021/09/22(水) 11:58:51.92 ID:Sp73Mnte 計算結果をパターンマッチさせようとして失敗してるのでは 値を値コンストラクタにばらしてその値コンストラクタに応じて処理を変えるのがパターンマッチ (マッチさせる対象がList aなら、:なのか[]なのかに応じて「先頭:後ろ」か空リストかが束縛される) で、計算結果をマッチさせたいならビューってのを定義してあげないといけませんよって話のような http://mevius.5ch.net/test/read.cgi/tech/1581326256/902
915: デフォルトの名無しさん [sage] 2021/09/30(木) 09:21:54.92 ID:LH+TfD4u すべからく警察だ! http://mevius.5ch.net/test/read.cgi/tech/1581326256/915
933: デフォルトの名無しさん [sage] 2021/10/22(金) 21:20:57.92 UTF-8 のHaskell ソースコードに書き込んだ日本語文字列を通信先に渡す為に Shift_JIS の String にしたいのですが module Main where import Data.Text.ICU.Convert as ICU import Data.Text as T import Data.ByteString.Char8 as BS main :: IO () main = do conv <- open "Shift_JIS" Nothing let utf8txt = T.pack "皆は、赤ちゃんしゅきぃ?" sjis_bs = fromUnicode conv utf8txt この sjis_bs をどうしたら Shift_JIS の String になるんですか? BS.unpack だと ツ皆ツづ債、ツ静板つソツづ。ツづアツつオツづ」ツつォツつ。ツ? になってしまいます http://mevius.5ch.net/test/read.cgi/tech/1581326256/933
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.037s