関数型プログラミング言語Haskell Part34 (694レス)
1-

181: 2023/01/03(火)00:10 ID:7mh2KVDC(1) AAS
見放されるようになったのは、
モナドってなに?というミステリアスで興味深い問いがいつのまにか
白けた話になったからじゃないか。もうどうでもいいというか。
182: 2023/01/03(火)04:29 ID:yYGSV1g6(1) AAS
技術評論社のせいでは?
183: 2023/01/04(水)05:08 ID:peYJ5uzH(1) AAS
メンテナーが次々と逃げ出してるのが象徴的・・
わかりやすいコードを書くとすこぶるパフォーマンス悪いし
だからといって頑張ると一体これは何をしたいのだってなる

遅延評価がデフォルトなのも非常にまずいし
正格評価と切り分けて結局は書かなければならずまだまだ発展途上だと感じる
いっそのこと正格評価はなしとした方がいっそ清々しい
184: 2023/01/04(水)18:10 ID:HUTbVNXS(1) AAS
PureScriptに移行しようぜ
正格評価で使いやすいし
185: 2023/01/05(木)03:59 ID:PBBtO4Nd(1/2) AAS
しかし無限数列とか表現できなくなるのがなぁ
186: 2023/01/05(木)12:24 ID:dQdtWkz5(1/2) AAS
あんなもの現実には扱えないからな
適当な数値を上限にしとけばいいだけ
187: 2023/01/05(木)13:19 ID:PBBtO4Nd(2/2) AAS
イヤ、“表現できる”ってとこに意味があるんだよ
188: 2023/01/05(木)14:40 ID:dQdtWkz5(2/2) AAS
その割にデメリットの方が大きすぎる
やはりいらないよ
189: 2023/01/14(土)23:43 ID:vLwyb8f9(1) AAS
PureScriptと被ってるかな?
[GHC 9.6.1-alpha1 is now available - Announcements - Haskell Community](外部リンク:discourse.haskell.org
190: 2023/01/17(火)00:55 ID:zIKNxshB(1/2) AAS
無限の長さの [a] を仮に廃止して他の言語と同じような方式に変えたら IO a のような型になる

生物学とか好きそうな人達は [a] と IO a の差が致命的 (つまり一方は死ぬが他方は生き残る)
と決めつける傾向がある
191: 2023/01/17(火)01:31 ID:PP1OxyD+(1) AAS
生物学関係ないな
192: 2023/01/17(火)03:13 ID:zIKNxshB(2/2) AAS
言語は死なないとか復活させればいいだけとか思うならもう生物学関係ない
そう思わないなら関係ありそう
193: 2023/01/17(火)08:07 ID:Inpyi8aQ(1) AAS
無意味な比喩表現
194: 2023/01/19(木)01:20 ID:cE+DUb2P(1) AAS
クラウドは中に人がいるのか無人なのか調べられないので
人間と機械を混同したのではなく不確実にした
195: 2023/01/19(木)07:47 ID:7wHhBGeN(1) AAS
意味不明
もう少し文章を書く練習をしろ
196: 2023/01/19(木)17:42 ID:ugYwIpAQ(1/2) AAS
嘘を書くのをやめろって言われない努力はしてる
現に、嘘だと言われない
197: 2023/01/19(木)20:45 ID:LuniV29G(1/2) AAS
間違ってさえいない文章
真偽以前に中身がない
198: 2023/01/19(木)20:49 ID:LuniV29G(2/2) AAS
それっぽいだけで少し読めば大したことすら書かれてないのがわかる
199
(1): 2023/01/19(木)21:18 ID:ugYwIpAQ(2/2) AAS
「わかる」と「意味不明」は矛盾しそう
どっちかが嘘ついるのでは
200: 2023/01/19(木)21:33 ID:QROh3L3M(1) AAS
>>199
お前読解力もないのか
もうこのスレ来るなよ
201: 2023/01/19(木)21:38 ID:CHvJHSS4(1) AAS
お前も反応すんなよ
202: 2023/01/20(金)01:52 ID:jpIFaaML(1) AAS
いくら話題がないからって
203: 2023/01/21(土)13:30 ID:ms4pFp6J(1) AAS
職業倫理が苦手です
204: 2023/01/21(土)16:31 ID:c9rqNig0(1) AAS
スレチ
205
(1): 2023/01/29(日)20:58 ID:3238s/rq(1) AAS
教科書の通りなのになんでエラーになるんだろう?
code:
fork :: (a->b, a->c) -> a -> (b, c)
fork (f, g) h = fork (f h, g h)
main :: IO ()
main = do
print $ fork (map fst, map snd) (zip [0 .. 4] "hallo")
省6
206
(1): 2023/01/30(月)02:11 ID:jVdK8GQm(1) AAS
>>205
fork (f, g) h = (f h, g h)
では?
207: 2023/01/30(月)04:31 ID:KsiNNj/4(1) AAS
>>206
ありがとうございます。その通りでした。
code:
pair :: (a->b, a->c) -> a -> (b, c)
pair (f, g) x = (f x, g x)
fork :: (a->b, a->c) -> a -> (b, c)
fork (f, g) h = pair (f, g) h
省6
208
(1): 2023/02/01(水)14:35 ID:RAEJFXsc(1) AAS
Haskell使い(でLinux使い)の皆さんってxmonad使ってますか?
ウィンドウフォーカスを切り替えるときにfloatingウィンドウは無視するようにしたいです。
オリジナルのfocusUp'関数は
focusUp' :: Stack a -> a
focusUp' (Stack t (l:ls) rs) = Stack l ls (t:rs)
focusUp' (Stack t [] rs) = Stack x xs []
 where (x :| xs) = NE.reverse (t :| rs)
省1
209: 2023/02/17(金)00:17 ID:x2uQcODA(1) AAS
ChatGPTにいろんなサンプル書かせて勉強させてもらってるわ
210: 2023/02/18(土)07:53 ID:pwjCq/Fb(1) AAS
>>208ですがスレチですかね
Linux板のタイル型WMスレに移動させていただきます (全く動いてないスレなのでダメ元ですが……)
211
(1): 2023/02/23(木)22:53 ID:3VcdShfb(1) AAS
すみません
凄いHを楽しく学ぶ本を復習していて
疑問に思って試してみたのですが

具体的な型が決まらない値(単独変数で)は
下記の(Maybeや配列)の他にどんなのがありますでしょうか。

v1 :: Maybe a
v1 = Nothing
省7
212
(1): 2023/02/24(金)02:14 ID:PIH/rCf2(1) AAS
>>211
Bing チャットに聞いたらこんなのが返ってきた。参考になるかな。

型変数を含むデータ型の例としては、関数型、代数的データ型、型クラスなどがあります。
例: data Tree a = Leaf a | Node (Tree a) (Tree a)
この代数的データ型Treeは任意の型aを要素とする二分木を表します。
例: class Eq a where
(==) :: a -> a -> Bool
省2
213: 2023/02/25(土)11:21 ID:h/PI1ikt(1) AAS
>>212
ありがとうございます。

凄いHを楽しく学ぶ本にも
Tree型があったので試してみました。

具体的な中身が「無い」事を現す値の場合
型引数で定義できるみたいです。

data Tree a = EmptyTree | Node a (Tree a) (Tree a)
省3
214
(2): 2023/04/29(土)14:07 ID:AoTbqg9O(1) AAS
マルチポストだが教えてくれ
【追記あり】ChatGPTじゃなくて人力でモナドが発明された経緯を適当に調べた(ソース付き)。
外部リンク:qiita.com
この記事正しいの?こんな話聞いたこともないし。圏論でモジュール性なんて扱えるの?
215: 2023/05/01(月)00:30 ID:PDTetkfq(1) AAS
>>214
よく分からんけど「モナドが発明された経緯」ではないな
1971年の本ですでにモナドについて書かれてるようだし
en.wikipedia.org/wiki/Categories_for_the_Working_Mathematician
216: 2023/05/03(水)20:58 ID:ioA1phJ7(1/2) AAS
>>214
英語で調べてもそんな話出てきたことはないな。
217: 2023/05/03(水)21:14 ID:ioA1phJ7(2/2) AAS
これにもそんなストーリー書いてない
外部リンク[pdf]:pdfs.semanticscholar.org
218: 2023/06/09(金)14:58 ID:GYy2ex4t(1) AAS
lispやらカリー=ハワード同型やらの関連性は
数学的な意味では遥か前だし実装上の話かな
外部リンク:en.m.wikipedia.org
219: 2023/06/20(火)00:30 ID:qm9+2t5E(1) AAS
do 記法でのメモ化について質問です
例えば

do
let x <- someComplexExpression
print $ f x
print $ g x

のようなコードがあったとしてxの値はf xの評価の時点とg xの評価の時点で2回別々にされますか?
省9
220: 2023/06/25(日)14:24 ID:H+Ij4nqZ(1/3) AAS
質問にさせていただきます
違う標数での有限体での計算を必要とするコードを考えてます

ある変数に𝔽₃や𝔽₅の値を混在して代入することはないので𝔽₃の元を生成するconstructor F3や𝔽₅の元を生成すconstructor F5を定義して

x = F3 $ 1+2
y = F5 $ 2-5

のような記述ができればいいなと思ってます
そのためには
省11
221: 2023/06/25(日)14:24 ID:H+Ij4nqZ(2/3) AAS
以下のようなerror が出てきます

prog.hs:22:10: error:
• The constraint ‘FiniteField a’
is no smaller than the instance head
(Use UndecidableInstances to permit this)
• In the instance declaration for ‘(Num a)’
|
省8
222: 2023/06/25(日)14:43 ID:H+Ij4nqZ(3/3) AAS
すいません、最後の行間違って修正前のやつコピペしました

class FiniteField t where
modulus :: t -> Int
toInt :: t -> Int
fromInt :: Int -> t

instance ( FiniteField a ) => ( Num a ) where
x + y = fromInt
省3
223: 2023/06/25(日)15:08 ID:CDxt6lPg(1/2) AAS
型クラスの単相性制限とか、関数従属性とか、とか。。。
的外れなこと言ってたらごめん。
224: 2023/06/25(日)15:23 ID:CDxt6lPg(2/2) AAS
なんか Bard とかにつっこんでも情報得られるかも
225: 2023/06/25(日)17:33 ID:OvK+yilq(1) AAS
ありがとうございます
現在まだ調べてる最中なんですけど

外部リンク:stackoverflow.com

によるとどうもclass制約の解決をloopさせないための制約くさいです
つまり「aがclasd Cのときclass Dにも入れる事ができる」、「aがclass Dのときclass Cにも入れる事ができる」の宣言

class ( C a ) => D a where ...

class ( D a ) => C a where ...
省6
226
(1): 2023/07/03(月)23:45 ID:QPaqlNti(1) AAS
値とmoduleどっちも含んだdata作ればいいのでは
227: 2023/07/04(火)00:24 ID:+0TfLuMN(1) AAS
>>226
こういうやつですね

data FiniteField = FF { val :: Int, modulus :: Int } deriving ( Show, Eq)

instance Num FiniteField where
x + y = FF ( mod ( ( val x ) + ( val y ) ) ( modulus x ) )( modulus x )
x * y = FF ( mod ( ( val x ) * ( val y ) ) ( modulus x ) )( modulus x )
fromInteger x = FF x 1
省9
228: 2023/07/04(火)11:11 ID:rN492ZrW(1) AAS
この記事では剰余環を作っているみたいだけど、参考にならないかな

外部リンク:qiita.com
229: 2023/07/06(木)01:04 ID:sds/6LG1(1) AAS
みなさん情報ありがとうございます
色々紹介していただいたソースとか自分で探してみた情報とかでまずは一区切りつける事にしました
こんな感じになりました
外部リンク:ideone.com
230: 2023/08/05(土)13:07 ID:1IOAcn45(1) AAS
hage
231: 2023/09/04(月)14:41 ID:FcZAE9nJ(1) AAS
haskellは廃れてきてるな、悲しい
スペースリーク対応は難しすぎるしライブラリ類も最新のghcだと使えなかったりしてなんか
実用的な言語じゃないなって思う
xmonadなんかはほとんどBangPatternだよね
そういえば自動でstrictにする拡張が2個ぐらいあったけど追ってないどうなの
232: 2023/09/16(土)21:21 ID:6682wM15(1/3) AAS
数学の集合は普通順番を付けて書くと思うのですが(添字でアクセスできたほうが便利)
なぜ多くの言語では集合に順番がないのでしょうか?
233: 2023/09/16(土)21:25 ID:6682wM15(2/3) AAS
等価判定演算子では順番を問わないが、
記法としては順番によるインデックスアクセスもできる、が便利だと思うのですが

一番基礎的な集合の一つである自然数が順番を重視して扱うように大半の集合は順序を整頓して書かないと実用上不便ではないでしょうか?
234: 2023/09/16(土)23:06 ID:XG1/1lYn(1) AAS
順番がないやつと順番があるやつは
なぜ対等な関係ではなく前者が一般的で後者が特殊だと言われるのか?

逆に、複素数はなんで虚部があるやつが一般的で虚部がないやつが特殊なのか?
235: 2023/09/16(土)23:13 ID:6682wM15(3/3) AAS
数学的概念として等価だったりどちらが特殊とか言えないのは納得しています

ただ、集合は順序を維持して記述するようにしたほうが明らかに認知的負荷が少なく、数学的記法でも多くの場合でそうなっていると思うのですが、
多くの言語で組み込み型の集合がそうなっていないのはどのような思想によるものでしょうか?という質問です
236: 2023/09/17(日)02:24 ID:yNwKlKA6(1) AAS
データ型としての起源としては
素集合データ構造から始まっているようなので
素である(disjoint)ことがまず要求されて
他に集合という名前が使われていないことから
素で非順序的なデータ型のことを集合型と呼ぶことになった模様
237: 2023/09/17(日)02:39 ID:XqeO/FaW(1) AAS
組み込み型とユーザー定義型の区別をなくす思想はある
最も正しいことを実現する思想ではなくミスをした場合の罪が軽くなる
238: 2023/09/17(日)23:47 ID:70jB6wMR(1) AAS
初心者は++を使うけどなれたら<>を使ってる人が多い気がする
SemiGroupであれさえすれば使える<>を使った方が汎用的にかけるからかな
239: 2023/09/18(月)10:00 ID:E5yF50jH(1) AAS
俗説が廃れるのは「時代が変われば正しさが変わるから」ではありません
俗説が正解だった時代などない
240: 2023/09/19(火)19:53 ID:QCYT99dv(1/3) AAS
unixのtouchを実現したいのですが

{-# LANGUAGE OverloadedStrings #-}
import System.Posix.Files.ByteString

main = do
touchFile "hoge.txt"

touch.hs: hoge.txt: touchFile: does not exist (No such file or directory)
というエラーがでます
省1
241: 2023/09/19(火)19:54 ID:QCYT99dv(2/3) AAS
unixのtouchを実現したいのですが

{-# LANGUAGE OverloadedStrings #-}
import System.Posix.Files.ByteString

main = do
touchFile "hoge.txt"

touch.hs: hoge.txt: touchFile: does not exist (No such file or directory)
というエラーがでます
省1
242: 2023/09/19(火)19:58 ID:QCYT99dv(3/3) AAS
すみません、書き込むボタンの反応がなかったので連投になってしまいました
243: 2023/09/19(火)20:14 ID:a563RtWW(1/3) AAS
touchの本来の意味を考えれば、まあできなくてもそういうもんだなと思ふ
244: 2023/09/19(火)20:14 ID:a563RtWW(2/3) AAS
touchの本来の意味を考えれば、まあできなくてもそういうもんだなと思ふ
245: 2023/09/19(火)20:18 ID:a563RtWW(3/3) AAS
ありゃ俺も連投しちまったすまん
なんか5ch重いっぽいね
246
(1): 2023/09/20(水)08:38 ID:I55f6i4N(1/2) AAS
for i in * ; do touch anotherdir/$i ; done
247: 2023/09/20(水)08:53 ID:I55f6i4N(2/2) AAS
>>246(bash)でお茶を濁した

perlが明日消えてなくなるらしいのでHaskellをPerlの代わりに使おうと思う
正規表現とグロブ、ファイル入出力はできた
他に何かあるかな
248
(1): 2023/09/22(金)12:15 ID:NjV4q9P3(1/2) AAS
数値のリストl=[1,10,3]みたいなのを
1 10 3と出力したい。末尾には空白はあってはならないとする
最初
putStrLn $ intersperse ' ' $ foldl' (\acc x -> acc ++ show x) [] l
こんなのを考えたのだが10も1 0と分解されてしまった
しかたなく泥臭いこんなコードを書いたのだがもっといい方法はないだろうか
mp [] = return ()
省4
249: 2023/09/22(金)13:06 ID:8SLDLfd5(1) AAS
外部リンク[html]:jutememo.blogspot.com
250: 2023/09/22(金)14:01 ID:NjV4q9P3(2/2) AAS
putStrLn $ intercalate " " $ map show l
これでいけました
251: 2023/09/22(金)14:01 ID:W8j4O+ex(1) AAS
泥臭いだけで罪があるかのように日常的に刷りこまれてるから
本当の有罪確定したやつは絶対許してもらえないよな
そりゃそうだよな
252: 2023/09/27(水)15:30 ID:9Ywamwi5(1) AAS
{-# LANGUAGE BinaryLiterals #-}
この拡張をいれても
let t = read "0x111" :: Int -- 16進数にパースできる 273
let s = read "0b111" :: Int -- 2進数にはパースできない
微妙に不便だ
253: 2023/09/27(水)17:59 ID:k7PwLxD8(1) AAS
readが定義されたモジュールは別のLANGUAGEってこと?
254
(1): 2023/10/11(水)15:16 ID:1pnnvG+R(1/2) AAS
groupBy (\a b -> snd a == snd b)
これを括弧を使わずにかけますか
groupBy ((==)<$>snd<*>snd)だと(a,b)->Boolとなって(a,b)->(c,d)->Boolとは型があいませんでした
255: 2023/10/11(水)17:39 ID:Fikp0OWy(1) AAS
>>254
import Data.Function
groupBy ((==) `on` snd)

結局かっこは使うのだけど、これがあなたの求めるものでしょうか
256: 2023/10/11(水)22:05 ID:1pnnvG+R(2/2) AAS
括弧を使わずにじゃなくてラムダを使わずにでした
まさに欲しかったのそれです
ありがとうございました!!
257: 2023/10/18(水)05:38 ID:vCrdR6l9(1) AAS
QuickCheckを勉強しているんですが
Runtime Errorを検出したくて次のように書きました
anの要素は2以上n以下で複数回出現します
testcaseがほとんどdiscardされるのですがリストをchoose (2,n)とかで生成するには
どうしたら良いのでしょうか
verboseCheckを指定してみるとskippedだらけなのですが
スキップしたやつは表示しないで欲しい
省4
258
(1): 2023/11/16(木)18:41 ID:wXoixzgD(1) AAS
岡部健、復活したよ!

エックス内を
“Ken140291“
で探してみて下さい。

最近登録したばかりの様です。
259: 2023/11/18(土)16:03 ID:sLhTkQlu(1) AAS
自分で書き込んでいるのでは・・・。
260
(1): 2023/11/19(日)15:31 ID:/inwpH7b(1) AAS
>>248
init $ folfl (\a x -> a++[show x]++“ “) ““ [3,10,1] でOK
261: 2023/11/20(月)09:46 ID:sZ0M6Dsh(1) AAS
>260 打ち間違えた!
lnlt$foldl(\a x->a ++show x++" ")[][1,10,3]
が正解。
1-
あと 433 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.031s