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

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回別々にされますか?
少なくともHaskell2010 Lang. Rep. (以下HLR2010)ではこのような場合メモ化されて2回展開されることはないという記述を見つけることはできませんでした
なので公式にはこのような記述だと2回展開されると思わなければいけないのだと思います
ではsomeComplexExpressionを先に展開してから、展開したものをxにbindするにはどうすれば良いのでしょうか?
省6
220: 2023/06/25(日)14:24 ID:H+Ij4nqZ(1/3) AAS
質問にさせていただきます
違う標数での有限体での計算を必要とするコードを考えてます

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

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

のような記述ができればいいなと思ってます
そのためには

data FiniteFieldCh3 = F3 Int
instance Num F3 where...
省9
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)’
|
22 | instance ( FiniteField a ) => ( Num a ) where
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

コレはなんですか?
省5
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
$ mod ( toInt x ) + ( toInt y ) ) ( modulus x )

です
よろしくお願い致します
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

でもコレだと例えば

x = FF 2 7
y = FF 4 7
省6
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)
というエラーがでます
ないのは当たり前でtouchで作ろうとしてるのですがバグがあるのでしょうか?
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)
というエラーがでます
ないのは当たり前でtouchで作ろうとしてるのですがバグがあるのでしょうか?
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
1-
あと 421 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s