関数型プログラミング言語Haskell Part34 (667レス)
上
下
前
次
1-
新
227
: 2023/07/04(火)00:24
ID:+0TfLuMN(1)
AA×
>>226
[
240
|320|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
227: [sage] 2023/07/04(火) 00:24:50.19 ID:+0TfLuMN >>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 x + y のような場合実行時にプログラムは値に格納されてるmodulusを読みに行ってから割り算行うという手間がかかります しかし私のやりたいプログラムではそもそも各変数のmodulusは確定していてそもそも読みに行くのはバカバカしい感じがします 実行時にxもyも𝔽₇の元と決まりきっててmod の第二引数はコンパイル時点で7と決まっているのにその7を読みに行く作業が無駄に思えるんです しかもコレは型ではなく値なので型チェックの恩恵も受けることができません プログラム中に出てくるmodilus事に全部F2型、F3型、F5型‥と全部作って全部のNum instance一個ずつ定義してとやればできるんでしょうけど、何が上手い逃げ道はないものかと http://mevius.5ch.net/test/read.cgi/tech/1639713446/227
こういうやつですね でもコレだと例えば のような場合実行時にプログラムは値に格納されてるを読みに行ってから割り算行うという手間がかかります しかし私のやりたいプログラムではそもそも各変数のは確定していてそもそも読みに行くのはバカバカしい感じがします 実行時にももの元と決まりきってて の第二引数はコンパイル時点でと決まっているのにそのを読みに行く作業が無駄に思えるんです しかもコレは型ではなく値なので型チェックの恩恵も受けることができません プログラム中に出てくる事に全部型型型と全部作って全部の 一個ずつ定義してとやればできるんでしょうけど何が上手い逃げ道はないものかと
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 440 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.038s