[過去ログ] 関数型プログラミング言語Haskell Part33 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
43: 2020/02/27(木)10:14:58.86 ID:MNKJ7PH5(1) AAS
PowerShellのリダイレクトに悩まされた
プログラムやHaskell側のエンコーディングの問題かと思ったらPowerShellの問題だった
70: 2020/03/26(木)20:45:53.86 ID:ylVms19z(1) AAS
Haskellerにとって読みやすいコードわかる

MonadだのApplicativeだのを無理に再現しようとして
でも型システムがへぼいから限界あって買いてる方も楽しくないし
読む方の辛さは言わずもがなだしで誰も幸せにならない
78: 2020/03/27(金)12:12:13.86 ID:gM1jKcLP(3/6) AAS
評価順序ってのは遅延評価のことか
doのことかもよくわからん
92
(1): 2020/03/27(金)20:03:05.86 ID:EYGPwzDC(1) AAS
そんな難しく考えなくても計算機に与える命令のつらなりってことじゃないの?
命令には純粋っぽい命令とそうでない命令があるけど、計算(評価)前ならどんな命令だろうが単なる値だから副作用もへったくれもないって理屈じゃね
実際はメモリー上の命令は全て状態だけど、書き換えられないように管理すれば純粋とみなせるってことだろ
例えば、
1+2*2^2^-1+3*3^3^-1
という式を考えた場合、これ全体を値として捉えることもできる
実際値として使おうとすると+、*、^の部分を命令として評価しないといけないけど、使い方によっては全部評価する必要はない
これに10足したかったら
11+2*2^2^-1+3*3^3^-1
で済ますこともできる
これを小数点以下10桁まで表示したくなった時、必要な桁まで計算(評価)すれば良い
‭18.1551758356…
Haskellの基本的な考え方はこういうことでしょ
93
(3): 2020/03/27(金)20:16:36.86 ID:adWh10vX(2/3) AAS
まずはっきりさせておきたいが、Haskellのテキストで
「命令列」なるものは出てこんし誰もそんなものを使ってモナドを説明しようとしてない。
あくまで「命令列」とは、>>74が自身でモナドを理解するために有用な概念だと見出し定義した用語と考えるべきだ

だからここで有意義な議論がしたいなら、まず目的を確認する必要がある。
我々は>>74さんの頭の中を理解したいのか?
それともモナドに対してより良い理解を形成したいのか?
114
(1): 2020/03/28(土)13:51:46.86 ID:HVNiklPA(3/3) AAS
言語仕様はよいよね
実装はどこがよいのかさっぱりわからんが、知らなくても問題ないと言われる
163
(1): 2020/04/03(金)18:00:08.86 ID:AMwYpRxM(1/2) AAS
かわいいです
326: 2020/05/23(土)01:56:13.86 ID:PUmkxvlF(2/3) AAS
>>324
>>325
それはひとつのモナドを3回評価しているのではなく、
ひとつのモナドの中の値を3回評価しているのではないでしょうか?

例えば repM (getLine >>= print) を評価すると、
1回しか getLine >>= print を評価しません。

ちなみに、IOモナドに限れば unsafeInterleaveIO 関数が使えます。
また、リストではなくいわゆるストリームなら出来ました。
ですが今はモナド全般に適用でき、リストのモナドを返す関数を求めています。
416: 2020/08/22(土)13:31:18.86 ID:DGMheHKA(1) AAS
それで?
会話や食事の中の唾液飛沫の3次元シミュレーションが出来るんですか?
451
(1): 2020/08/30(日)15:32:06.86 ID:mGp/4vHZ(1) AAS
>>449
外部リンク[html]:downloads.haskell.org
でData.ComplexのソースコードでNumクラスのインスタンス定義を見たところ
メソッドabsとsignumの実装に
magnitude :: (RealFloat a) => Complex a -> a
を使ってるからみたいだね

本当に足したり引いたりしたいだけならNum制約は強すぎる
数のクラス体系の問題点について詳しくは
外部リンク:blog.miz-ar.info
569: 2020/11/11(水)22:07:05.86 ID:F87BSTFR(1) AAS
>>568
そうなんですか?
とりあえずモナドで試してみます
兎にも角にも正格評価と遅延評価でこんなに計算の回数が違ってくるってのなんかご存知ないですか?
例えばdpの例でFibonacciを

f 0 = 0
f 1 = 1
f n = (f $ n-1) + (f $ n-2)



f' 0 = (0,1)
f' n = (a+b,a) where (a,b) = f' (n-1)
f = fst . f'

で比べると目に見えて計算量が違うみたいな奴で「正格評価が効いてる」って目に見えてわかるような例があるとありがたいんですが
619: 2021/01/05(火)09:39:14.86 ID:b/Fw/Z0P(1) AAS
ふと思った。

a型の2次元配列が必要になった時、
[[a]] や Array (Int, Int) a ではなく、
(Int, Int) -> a が真っ先に思い浮かぶなら、
そいつは関数型にどっぷりハマってるな、と。
674: 2021/01/22(金)00:20:12.86 ID:IysdrbOG(1) AAS
HaskellとPythonは似ていないから両方使ってもDRYに違反しない

似たもの同士で馴れ合い、異質なもの同士を分断するやつは信用できないが
Pythonは似たもの同士でしっかり競争して生き残ったやつだから信用できる
720
(1): 2021/02/08(月)12:31:08.86 ID:hFpKnaPX(1) AAS
>>707
リスト使ったメモ化の理解にはいいんですけど、その例も実は遅いんですよね。!!がO(n)なので。
module Main where
import Data.Function
import qualified Data.Vector as V
main = do
let memo = fibMyMemo 50000
print $memo 50000
print $fibMemo 50000
fibMyMemo l = fib
where
fib = ((V.map f $ V.enumFromN 0 (l + 1)) V.!)
f 0 = 0 :: Integer
f 1 = 1
f n = fib (n -1) + fib (n -2)
memoize f = (map f [0 ..] !!)
fib f 0 = 0
fib f 1 = 1
fib f n = f (n - 1) + f (n - 2)
fibMemo = fix (memoize . fib)
757: 2021/02/26(金)02:07:21.86 ID:Drny41hT(1) AAS
型は集合ではない
値は元ではない
プログラム上の関数は数学的な意味での関数ではない

Haskellは数学ではない
780: 2021/03/20(土)14:58:31.86 ID:5ytd1i+3(1) AAS
カリーハワード同型対応とかって、機械学習だのアーキテクチャだのネットワークだのアルゴリズムだのといった工学的で応用的で目的意識の定まった何かの役に立つために発明されたものというよりも、理学的で基礎的な単なる重要な事実という雰囲気ある気がする
814: 2021/04/17(土)18:16:48.86 ID:+4ymujjn(2/2) AAS
動かないと言うのはghciに入力すると結果がいつまで経っても出力されない状況を指します
861: 2021/07/10(土)12:28:39.86 ID:5i+2sdHC(2/2) AAS
hackageをfloatで検索した結果。怪しそうなやつ:
外部リンク:hackage.haskell.org
外部リンク:hackage.haskell.org
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.038s