関数型プログラミング言語 Haskell について語るスレです。
Haskell Language(公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ - Haskell-jp
https://haskell.jp/
前スレ
関数型プログラミング言語Haskell Part33
https://mevius.5ch.net/test/read.cgi/tech/1581326256/
探検
関数型プログラミング言語Haskell Part34
1デフォルトの名無しさん
2021/12/17(金) 12:57:26.37ID:NPioGyUL221デフォルトの名無しさん
2023/06/25(日) 14:24:14.71ID:H+Ij4nqZ 以下のような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
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
コレはなんですか?
ちなみにFlexibleInstancesというのが必要かとの事なので冒頭に
{-# LANGUAGE FlexibleInstances #-}
を入れています
コンパイラはghc8.4.4です
よろしくお願い致します
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
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
コレはなんですか?
ちなみにFlexibleInstancesというのが必要かとの事なので冒頭に
{-# LANGUAGE FlexibleInstances #-}
を入れています
コンパイラはghc8.4.4です
よろしくお願い致します
222デフォルトの名無しさん
2023/06/25(日) 14:43:47.12ID:H+Ij4nqZ すいません、最後の行間違って修正前のやつコピペしました
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 )
です
よろしくお願い致します
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:12.64ID:CDxt6lPg 型クラスの単相性制限とか、関数従属性とか、とか。。。
的外れなこと言ってたらごめん。
的外れなこと言ってたらごめん。
224デフォルトの名無しさん
2023/06/25(日) 15:23:50.61ID:CDxt6lPg なんか Bard とかにつっこんでも情報得られるかも
225デフォルトの名無しさん
2023/06/25(日) 17:33:31.79ID:OvK+yilq ありがとうございます
現在まだ調べてる最中なんですけど
https://stackoverflow.com/questions/7198907/haskell-constraint-is-no-smaller-than-the-instance-head
によるとどうもclass制約の解決をloopさせないための制約くさいです
つまり「aがclasd Cのときclass Dにも入れる事ができる」、「aがclass Dのときclass Cにも入れる事ができる」の宣言
class ( C a ) => D a where ...
class ( D a ) => C a where ...
のような宣言があるとまずいようです
なので=>の左側の型は右側の型より“短い”事が要求されるそうです
例えばtoDみたいな型生成子を作っておいて
class ( C a ) => ( D ( toD a ) ) where ...
などとしないといけないらしいです
でその後newtypeを使うとどうやらこうやら書いてあるんですけどなんのことやら
現在まだ調べてる最中なんですけど
https://stackoverflow.com/questions/7198907/haskell-constraint-is-no-smaller-than-the-instance-head
によるとどうもclass制約の解決をloopさせないための制約くさいです
つまり「aがclasd Cのときclass Dにも入れる事ができる」、「aがclass Dのときclass Cにも入れる事ができる」の宣言
class ( C a ) => D a where ...
class ( D a ) => C a where ...
のような宣言があるとまずいようです
なので=>の左側の型は右側の型より“短い”事が要求されるそうです
例えばtoDみたいな型生成子を作っておいて
class ( C a ) => ( D ( toD a ) ) where ...
などとしないといけないらしいです
でその後newtypeを使うとどうやらこうやら書いてあるんですけどなんのことやら
226デフォルトの名無しさん
2023/07/03(月) 23:45:49.20ID:QPaqlNti 値とmoduleどっちも含んだdata作ればいいのでは
227デフォルトの名無しさん
2023/07/04(火) 00:24:50.19ID:+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一個ずつ定義してとやればできるんでしょうけど、何が上手い逃げ道はないものかと
こういうやつですね
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一個ずつ定義してとやればできるんでしょうけど、何が上手い逃げ道はないものかと
228デフォルトの名無しさん
2023/07/04(火) 11:11:04.93ID:rN492ZrW229デフォルトの名無しさん
2023/07/06(木) 01:04:07.84ID:sds/6LG1 みなさん情報ありがとうございます
色々紹介していただいたソースとか自分で探してみた情報とかでまずは一区切りつける事にしました
こんな感じになりました
https://ideone.com/3Lhc4z
色々紹介していただいたソースとか自分で探してみた情報とかでまずは一区切りつける事にしました
こんな感じになりました
https://ideone.com/3Lhc4z
230デフォルトの名無しさん
2023/08/05(土) 13:07:07.29ID:1IOAcn45 hage
231デフォルトの名無しさん
2023/09/04(月) 14:41:20.09ID:FcZAE9nJ haskellは廃れてきてるな、悲しい
スペースリーク対応は難しすぎるしライブラリ類も最新のghcだと使えなかったりしてなんか
実用的な言語じゃないなって思う
xmonadなんかはほとんどBangPatternだよね
そういえば自動でstrictにする拡張が2個ぐらいあったけど追ってないどうなの
スペースリーク対応は難しすぎるしライブラリ類も最新のghcだと使えなかったりしてなんか
実用的な言語じゃないなって思う
xmonadなんかはほとんどBangPatternだよね
そういえば自動でstrictにする拡張が2個ぐらいあったけど追ってないどうなの
232デフォルトの名無しさん
2023/09/16(土) 21:21:50.35ID:6682wM15 数学の集合は普通順番を付けて書くと思うのですが(添字でアクセスできたほうが便利)
なぜ多くの言語では集合に順番がないのでしょうか?
なぜ多くの言語では集合に順番がないのでしょうか?
233デフォルトの名無しさん
2023/09/16(土) 21:25:49.38ID:6682wM15 等価判定演算子では順番を問わないが、
記法としては順番によるインデックスアクセスもできる、が便利だと思うのですが
一番基礎的な集合の一つである自然数が順番を重視して扱うように大半の集合は順序を整頓して書かないと実用上不便ではないでしょうか?
記法としては順番によるインデックスアクセスもできる、が便利だと思うのですが
一番基礎的な集合の一つである自然数が順番を重視して扱うように大半の集合は順序を整頓して書かないと実用上不便ではないでしょうか?
234デフォルトの名無しさん
2023/09/16(土) 23:06:28.20ID:XG1/1lYn 順番がないやつと順番があるやつは
なぜ対等な関係ではなく前者が一般的で後者が特殊だと言われるのか?
逆に、複素数はなんで虚部があるやつが一般的で虚部がないやつが特殊なのか?
なぜ対等な関係ではなく前者が一般的で後者が特殊だと言われるのか?
逆に、複素数はなんで虚部があるやつが一般的で虚部がないやつが特殊なのか?
235デフォルトの名無しさん
2023/09/16(土) 23:13:33.62ID:6682wM15 数学的概念として等価だったりどちらが特殊とか言えないのは納得しています
ただ、集合は順序を維持して記述するようにしたほうが明らかに認知的負荷が少なく、数学的記法でも多くの場合でそうなっていると思うのですが、
多くの言語で組み込み型の集合がそうなっていないのはどのような思想によるものでしょうか?という質問です
ただ、集合は順序を維持して記述するようにしたほうが明らかに認知的負荷が少なく、数学的記法でも多くの場合でそうなっていると思うのですが、
多くの言語で組み込み型の集合がそうなっていないのはどのような思想によるものでしょうか?という質問です
236デフォルトの名無しさん
2023/09/17(日) 02:24:17.53ID:yNwKlKA6 データ型としての起源としては
素集合データ構造から始まっているようなので
素である(disjoint)ことがまず要求されて
他に集合という名前が使われていないことから
素で非順序的なデータ型のことを集合型と呼ぶことになった模様
素集合データ構造から始まっているようなので
素である(disjoint)ことがまず要求されて
他に集合という名前が使われていないことから
素で非順序的なデータ型のことを集合型と呼ぶことになった模様
237デフォルトの名無しさん
2023/09/17(日) 02:39:39.55ID:XqeO/FaW 組み込み型とユーザー定義型の区別をなくす思想はある
最も正しいことを実現する思想ではなくミスをした場合の罪が軽くなる
最も正しいことを実現する思想ではなくミスをした場合の罪が軽くなる
238デフォルトの名無しさん
2023/09/17(日) 23:47:13.96ID:70jB6wMR 初心者は++を使うけどなれたら<>を使ってる人が多い気がする
SemiGroupであれさえすれば使える<>を使った方が汎用的にかけるからかな
SemiGroupであれさえすれば使える<>を使った方が汎用的にかけるからかな
239デフォルトの名無しさん
2023/09/18(月) 10:00:00.93ID:E5yF50jH 俗説が廃れるのは「時代が変われば正しさが変わるから」ではありません
俗説が正解だった時代などない
俗説が正解だった時代などない
240デフォルトの名無しさん
2023/09/19(火) 19:53:05.75ID:QCYT99dv 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で作ろうとしてるのですがバグがあるのでしょうか?
{-# 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:00.31ID:QCYT99dv 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で作ろうとしてるのですがバグがあるのでしょうか?
{-# 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:16.28ID:QCYT99dv すみません、書き込むボタンの反応がなかったので連投になってしまいました
243デフォルトの名無しさん
2023/09/19(火) 20:14:24.31ID:a563RtWW touchの本来の意味を考えれば、まあできなくてもそういうもんだなと思ふ
244デフォルトの名無しさん
2023/09/19(火) 20:14:45.64ID:a563RtWW touchの本来の意味を考えれば、まあできなくてもそういうもんだなと思ふ
245デフォルトの名無しさん
2023/09/19(火) 20:18:27.88ID:a563RtWW ありゃ俺も連投しちまったすまん
なんか5ch重いっぽいね
なんか5ch重いっぽいね
246デフォルトの名無しさん
2023/09/20(水) 08:38:40.03ID:I55f6i4N for i in * ; do touch anotherdir/$i ; done
247デフォルトの名無しさん
2023/09/20(水) 08:53:25.46ID:I55f6i4N248デフォルトの名無しさん
2023/09/22(金) 12:15:07.45ID:NjV4q9P3 数値のリストl=[1,10,3]みたいなのを
1 10 3と出力したい。末尾には空白はあってはならないとする
最初
putStrLn $ intersperse ' ' $ foldl' (\acc x -> acc ++ show x) [] l
こんなのを考えたのだが10も1 0と分解されてしまった
しかたなく泥臭いこんなコードを書いたのだがもっといい方法はないだろうか
mp [] = return ()
mp [x] = putStrLn $ show x
mp (x:xs) = do
putStr $ show x ++ " "
mp xs
1 10 3と出力したい。末尾には空白はあってはならないとする
最初
putStrLn $ intersperse ' ' $ foldl' (\acc x -> acc ++ show x) [] l
こんなのを考えたのだが10も1 0と分解されてしまった
しかたなく泥臭いこんなコードを書いたのだがもっといい方法はないだろうか
mp [] = return ()
mp [x] = putStrLn $ show x
mp (x:xs) = do
putStr $ show x ++ " "
mp xs
249デフォルトの名無しさん
2023/09/22(金) 13:06:36.18ID:8SLDLfd5250デフォルトの名無しさん
2023/09/22(金) 14:01:02.50ID:NjV4q9P3 putStrLn $ intercalate " " $ map show l
これでいけました
これでいけました
251デフォルトの名無しさん
2023/09/22(金) 14:01:12.58ID:W8j4O+ex 泥臭いだけで罪があるかのように日常的に刷りこまれてるから
本当の有罪確定したやつは絶対許してもらえないよな
そりゃそうだよな
本当の有罪確定したやつは絶対許してもらえないよな
そりゃそうだよな
252デフォルトの名無しさん
2023/09/27(水) 15:30:51.70ID:9Ywamwi5 {-# LANGUAGE BinaryLiterals #-}
この拡張をいれても
let t = read "0x111" :: Int -- 16進数にパースできる 273
let s = read "0b111" :: Int -- 2進数にはパースできない
微妙に不便だ
この拡張をいれても
let t = read "0x111" :: Int -- 16進数にパースできる 273
let s = read "0b111" :: Int -- 2進数にはパースできない
微妙に不便だ
253デフォルトの名無しさん
2023/09/27(水) 17:59:16.99ID:k7PwLxD8 readが定義されたモジュールは別のLANGUAGEってこと?
254デフォルトの名無しさん
2023/10/11(水) 15:16:15.28ID:1pnnvG+R groupBy (\a b -> snd a == snd b)
これを括弧を使わずにかけますか
groupBy ((==)<$>snd<*>snd)だと(a,b)->Boolとなって(a,b)->(c,d)->Boolとは型があいませんでした
これを括弧を使わずにかけますか
groupBy ((==)<$>snd<*>snd)だと(a,b)->Boolとなって(a,b)->(c,d)->Boolとは型があいませんでした
255デフォルトの名無しさん
2023/10/11(水) 17:39:54.48ID:Fikp0OWy256デフォルトの名無しさん
2023/10/11(水) 22:05:36.63ID:1pnnvG+R 括弧を使わずにじゃなくてラムダを使わずにでした
まさに欲しかったのそれです
ありがとうございました!!
まさに欲しかったのそれです
ありがとうございました!!
257デフォルトの名無しさん
2023/10/18(水) 05:38:40.90ID:vCrdR6l9 QuickCheckを勉強しているんですが
Runtime Errorを検出したくて次のように書きました
anの要素は2以上n以下で複数回出現します
testcaseがほとんどdiscardされるのですがリストをchoose (2,n)とかで生成するには
どうしたら良いのでしょうか
verboseCheckを指定してみるとskippedだらけなのですが
スキップしたやつは表示しないで欲しい
prop :: Positive Int -> [Int] -> Property
prop (Positive n) an = all (>=2) an && length an == n ==> monadicIO $ do
a' <- run (solve n an)
assert True
Runtime Errorを検出したくて次のように書きました
anの要素は2以上n以下で複数回出現します
testcaseがほとんどdiscardされるのですがリストをchoose (2,n)とかで生成するには
どうしたら良いのでしょうか
verboseCheckを指定してみるとskippedだらけなのですが
スキップしたやつは表示しないで欲しい
prop :: Positive Int -> [Int] -> Property
prop (Positive n) an = all (>=2) an && length an == n ==> monadicIO $ do
a' <- run (solve n an)
assert True
258デフォルトの名無しさん
2023/11/16(木) 18:41:54.01ID:wXoixzgD 岡部健、復活したよ!
エックス内を
“Ken140291“
で探してみて下さい。
最近登録したばかりの様です。
エックス内を
“Ken140291“
で探してみて下さい。
最近登録したばかりの様です。
259デフォルトの名無しさん
2023/11/18(土) 16:03:54.22ID:sLhTkQlu 自分で書き込んでいるのでは・・・。
260デフォルトの名無しさん
2023/11/19(日) 15:31:44.23ID:/inwpH7b >>248
init $ folfl (\a x -> a++[show x]++“ “) ““ [3,10,1] でOK
init $ folfl (\a x -> a++[show x]++“ “) ““ [3,10,1] でOK
261デフォルトの名無しさん
2023/11/20(月) 09:46:08.35ID:sZ0M6Dsh >260 打ち間違えた!
lnlt$foldl(\a x->a ++show x++" ")[][1,10,3]
が正解。
lnlt$foldl(\a x->a ++show x++" ")[][1,10,3]
が正解。
262デフォルトの名無しさん
2023/11/20(月) 14:32:44.66ID:4MiKC4cJ >>258
ぎゃははははははは
ぎゃははははははは
263デフォルトの名無しさん
2023/11/20(月) 21:45:30.49ID:Jf1v4QK8 https://github.com/ken-okabe/functional-programming-from-scratch-ja#before
> Unkown(気づいてない)
ウンコウンわろた。
> Unkown(気づいてない)
ウンコウンわろた。
264デフォルトの名無しさん
2023/11/20(月) 23:57:47.37ID:N43MAaAU スレチ
265デフォルトの名無しさん
2023/11/21(火) 12:01:48.14ID:MS7pneIs 毛の壁くん復活してたのか!!
266デフォルトの名無しさん
2023/11/21(火) 12:21:46.16ID:W0g+S6dW267デフォルトの名無しさん
2023/11/22(水) 15:27:17.26ID:1OepVPCl こんなコードがあるのですが
cumsum k = unfoldr next . (,) 0
where
next :: (Int, [Int]) -> Maybe (Int, (Int, [Int]))
next (acc, x : xs) | acc <= k - x, acc' <- acc + x = Just (acc', (acc', xs))
next _ = Nothing
acc <= k-xはわかるのですが、acc' <- acc + xというのはどういう文法なのですか?
リスト内包表記でもないですし条件式の部分でモナドを扱ってるわけではないですよね?
cumsum k = unfoldr next . (,) 0
where
next :: (Int, [Int]) -> Maybe (Int, (Int, [Int]))
next (acc, x : xs) | acc <= k - x, acc' <- acc + x = Just (acc', (acc', xs))
next _ = Nothing
acc <= k-xはわかるのですが、acc' <- acc + xというのはどういう文法なのですか?
リスト内包表記でもないですし条件式の部分でモナドを扱ってるわけではないですよね?
268デフォルトの名無しさん
2023/11/22(水) 16:31:30.12ID:PuIW3qrN >>267
パターンガードかな
https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%BC%E3%83%89_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
パターンガードかな
https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%BC%E3%83%89_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
269デフォルトの名無しさん
2023/11/23(木) 07:24:43.49ID:WRBO39fy <-はパターンガード修飾子と呼ぶのですね
初めて知りました
ありがとうございました
初めて知りました
ありがとうございました
270デフォルトの名無しさん
2023/11/24(金) 17:42:26.91ID:V3Fz2AWZ 毛の壁のTwitterの新しいアカウントは
Ken140291
FPFSstutorial
leadmove3648637
です!!
Ken140291
FPFSstutorial
leadmove3648637
です!!
271デフォルトの名無しさん
2023/12/04(月) 12:27:24.28ID:GjmDAseS >>270
ぎゃっはっはっはっはw
ぎゃっはっはっはっはw
272デフォルトの名無しさん
2024/01/01(月) 20:17:21.69ID:DcfOChZv mapAccumL/Rの使いどころがよくわからないのですが
どういう時に使うとかの指針ってありますか?
どういう時に使うとかの指針ってありますか?
273デフォルトの名無しさん
2024/01/09(火) 22:50:44.14ID:3mg8b04T ここ5年で発売されたHaskellの書籍で最も優れたものを紹介してください
274デフォルトの名無しさん
2024/01/12(金) 10:55:28.35ID:cAhPSGjh オワコン
275デフォルトの名無しさん
2024/02/29(木) 01:38:01.78ID:d2gqoSk4 windowsにインストールできんみたいだなcabalがエラー?
まあwindowsでやるなってことだな
まあwindowsでやるなってことだな
276デフォルトの名無しさん
2024/03/03(日) 23:47:35.89ID:9XAeTkis モナドについて、床下配線に例えられたり、世界を受け取って副作用後の世界を返すと(IOモナドについて)語られたりするのが当時は分からなくて、考えた結果
何かから値を取り出し、関数適用して(その関数が)何かに値を戻す「動き」をモナドという。
って結論になっていたのだが、IOモナドも含めてもっと良い例えはないかと考えた結果、
モナドとは、アウトソーシング(外部依頼)を数学的に表現したもの。
という結論に至った。
アウトソーシング先が(数学の)外の世界だとIOモナドで、同じ数学の世界だとその他のモナド。
それならHaskell自身は「この関数実行しておいて~」って依頼出して結果を受け取るだけだから、
副作用はないと言う主張に矛盾はない(のか?)
(もしくは、IOモナドはHaskellが受け取れる形の値を返すような入出力の「マシン語」を返してる?)
そう考えると、数学が「数学の外とのやり取り」という概念を獲得したと思うと凄い。
何かから値を取り出し、関数適用して(その関数が)何かに値を戻す「動き」をモナドという。
って結論になっていたのだが、IOモナドも含めてもっと良い例えはないかと考えた結果、
モナドとは、アウトソーシング(外部依頼)を数学的に表現したもの。
という結論に至った。
アウトソーシング先が(数学の)外の世界だとIOモナドで、同じ数学の世界だとその他のモナド。
それならHaskell自身は「この関数実行しておいて~」って依頼出して結果を受け取るだけだから、
副作用はないと言う主張に矛盾はない(のか?)
(もしくは、IOモナドはHaskellが受け取れる形の値を返すような入出力の「マシン語」を返してる?)
そう考えると、数学が「数学の外とのやり取り」という概念を獲得したと思うと凄い。
277デフォルトの名無しさん
2024/03/04(月) 00:46:59.53ID:XMYw3zR0 箱の中に処理したいデータが入ってるけど一緒にIOウイルスも入ってて
普通に箱を開けるとIOウイルスが外界に漏れて困るから
もう一回り大きい箱を用意してその中に箱とデータ処理装置を入れて
密封した上で内側の箱を開けてデータを処理する
そうすると箱の中に処理されたデータとIOウイルスが入った状態になる
これを延々と繰り返すのがIOモナド
ずっと前に毒ガスで考えた比喩だけど最近だとこっちだな
普通に箱を開けるとIOウイルスが外界に漏れて困るから
もう一回り大きい箱を用意してその中に箱とデータ処理装置を入れて
密封した上で内側の箱を開けてデータを処理する
そうすると箱の中に処理されたデータとIOウイルスが入った状態になる
これを延々と繰り返すのがIOモナド
ずっと前に毒ガスで考えた比喩だけど最近だとこっちだな
278デフォルトの名無しさん
2024/03/04(月) 01:02:22.82ID:vyClhVzf ふーむ。
仮にアセンブラと1対1に対応したCの関数を全部Haskellから呼べるようにすると、出来ちゃうわけで。
(do形式だとまるっきりアセンブラコードに見えるHaskellコードの出来上がり)
そう考えて私のアウトソーシング説が出来た感じですね。
Haskellがモナドを採用したのは数学(関数型言語だったっけ?)の敗北ってどっかで読みましたし。
仮にアセンブラと1対1に対応したCの関数を全部Haskellから呼べるようにすると、出来ちゃうわけで。
(do形式だとまるっきりアセンブラコードに見えるHaskellコードの出来上がり)
そう考えて私のアウトソーシング説が出来た感じですね。
Haskellがモナドを採用したのは数学(関数型言語だったっけ?)の敗北ってどっかで読みましたし。
279デフォルトの名無しさん
2024/03/04(月) 01:22:40.61ID:XMYw3zR0 doの場合は1行ごとに新しい箱が作られてる
順序はたまに前後するけど内側の箱のデータは外側の箱でしか使えないから
必要な順序は保証される
外界の予測不能な状態を全部1つの箱の中に押し込んで
箱の外側の処理装置製造工場は全部予測可能(純粋)にしてる感じ
数学の敗北の意味はよく分からないけど
実用性のために予測不能な状態を持ち込んだことかな
順序はたまに前後するけど内側の箱のデータは外側の箱でしか使えないから
必要な順序は保証される
外界の予測不能な状態を全部1つの箱の中に押し込んで
箱の外側の処理装置製造工場は全部予測可能(純粋)にしてる感じ
数学の敗北の意味はよく分からないけど
実用性のために予測不能な状態を持ち込んだことかな
280デフォルトの名無しさん
2024/03/06(水) 10:29:39.18ID:Yy7OLBEk なんか大げさな例えを使いたがるやつが増えたなぁ
コーディングの上でなんの役に立つんだが
コーディングの上でなんの役に立つんだが
281デフォルトの名無しさん
2024/03/06(水) 15:29:14.97ID:soRPwZI7 「末尾呼び出ししたい関数をデータコンストラクタで置き換える」という仮説は役に立つけれども
(>>=)はコンストラクタではないという事実を見ただけで仮説を捨ててしまうことは科学的によくあること
(>>=)はコンストラクタではないという事実を見ただけで仮説を捨ててしまうことは科学的によくあること
282デフォルトの名無しさん
2024/04/10(水) 04:46:37.45ID:+L19CyUd WindowsでghcupをインストールするのにWSLが不要になって
PowerShellだけで導入できるようになってる
PowerShellだけで導入できるようになってる
283デフォルトの名無しさん
2024/04/13(土) 09:43:59.70ID:p3ysjEUv rustスレで知ったけどhaskellを正格にして依存型を入れたidris(idris2)つー言語があるんだな
284デフォルトの名無しさん
2024/04/13(土) 10:37:58.47ID:VEwLcqlL idrisまで興味があるのならHaskell/Elm/Rust/Zigの流れで開発されているRoc-langも見ておくと良い
特にstatic reference counting周り
特にstatic reference counting周り
285デフォルトの名無しさん
2024/04/13(土) 22:46:49.50ID:p3ysjEUv 色々知らないのがあった、ありがとう
static reference countingつーのが流行りなの
最近のhaskellもrustみたいな1回しかつかえない線形型(linera haskell?)が導入されてるね
static reference countingつーのが流行りなの
最近のhaskellもrustみたいな1回しかつかえない線形型(linera haskell?)が導入されてるね
286デフォルトの名無しさん
2024/04/14(日) 08:32:57.22ID:ZXz6cRZI IOモナドの入力関数も、引数のない関数=変数と捉えると、実質線形型と同じ。
let x = 0 in return (x + 1) >>= x -> print x
こうすると変数xはシャドーイングによって同名の別の変数が生成される。
getLineとかの入力関数はHaskell(数学)の外で初期化される変数とも考えられる。
let x = 0 in return (x + 1) >>= x -> print x
こうすると変数xはシャドーイングによって同名の別の変数が生成される。
getLineとかの入力関数はHaskell(数学)の外で初期化される変数とも考えられる。
287デフォルトの名無しさん
2024/05/17(金) 10:56:06.61ID:kEVlBeR0 参照カウントは0になれば即座にデストラクタを呼び出す
つまり呼び出しを遅延しない
正格にすることと参照カウントを入れることは実質的に同じこと
つまり呼び出しを遅延しない
正格にすることと参照カウントを入れることは実質的に同じこと
288デフォルトの名無しさん
2024/05/18(土) 22:55:12.58ID:HEnIptqp cabalのバージョン上がってたので
windowsで試したらちゃんと動いたわ
気にかけてくれてたんやな
windowsで試したらちゃんと動いたわ
気にかけてくれてたんやな
289デフォルトの名無しさん
2024/06/11(火) 20:46:47.08ID:zqrBHeqN IOモナドを拡張して、副作用をDBだけに限定したモナドとか作れないの?
290デフォルトの名無しさん
2024/06/20(木) 02:22:58.45ID:s4SRXQdp いつの間にかHaskellがC#より速くなってた…。
https://nshinchan01.hateblo.jp/entry/2024/06/20/021327
https://nshinchan01.hateblo.jp/entry/2024/06/20/021327
291デフォルトの名無しさん
2024/06/23(日) 11:34:59.09ID:1+Xj+JzS すみません
GHCのWindows11対応についての質問ですが
「9.2」以前のGHCはWindows11をサポートしていないとの事ですが
ttps://gitlab.haskell.org/ghc/ghc/-/wikis/platforms/windows
これはプログラムコンパイルをして
アプリケーションを生成できないだけで
コンソール内での実行や学習をする分には
「9.2」以前のGHCでも問題ないとの認識で大丈夫でしょうか。
ライブラリが9.0に対応していない物があり確認したいです。
GHCのWindows11対応についての質問ですが
「9.2」以前のGHCはWindows11をサポートしていないとの事ですが
ttps://gitlab.haskell.org/ghc/ghc/-/wikis/platforms/windows
これはプログラムコンパイルをして
アプリケーションを生成できないだけで
コンソール内での実行や学習をする分には
「9.2」以前のGHCでも問題ないとの認識で大丈夫でしょうか。
ライブラリが9.0に対応していない物があり確認したいです。
292デフォルトの名無しさん
2024/06/23(日) 21:13:21.29ID:1+Xj+JzS 度々すみません。
GHCのWindows11対応についての質問の件
Windows11機にGHC8.xをインストールして試した所
問題なくコンソールから実行して
結果のデータファイル生成できました。
取り敢えずはこれでやってみます。
GHCのWindows11対応についての質問の件
Windows11機にGHC8.xをインストールして試した所
問題なくコンソールから実行して
結果のデータファイル生成できました。
取り敢えずはこれでやってみます。
293デフォルトの名無しさん
2024/07/03(水) 21:32:31.40ID:FVo2vRsM Functorってf : value -> valueの関数をfmap f : computation -> computationの関数に拡張してあれこれするけど、
そもそもvalue -> value関数がいらなくない?
わざわざvalue とcomputationを区別するから難しくなるのであって、
全部Functor適用した体で computation -> computationの拡張関数だけ使うように
設計しなおせばもっと普及するんじゃない?
そもそもvalue -> value関数がいらなくない?
わざわざvalue とcomputationを区別するから難しくなるのであって、
全部Functor適用した体で computation -> computationの拡張関数だけ使うように
設計しなおせばもっと普及するんじゃない?
294デフォルトの名無しさん
2024/07/03(水) 23:29:27.98ID:XPii5wC3 何を言っとるんじゃw
295デフォルトの名無しさん
2024/07/04(木) 00:05:21.90ID:CIK9cQRa computationにしたら理論的にカプセル化されるから、例えばT computationで専用に作った関数はU computationでは使いまわしできない。
だから一般的にvalue -> valueで作ることでT computationでもU computationでも使いまわしできるようにしてるというのはわかる。
でも、そういうところが使いにくくて普及してないんじゃないかと思うから、T computationで専用で作った関数も特に何もせず
U computationの関数として使えるようになったらもっと使いやすくなると思う。
というかHaskellにはcomputationの概念は百害あって一利なしなんじゃまいか。
だから一般的にvalue -> valueで作ることでT computationでもU computationでも使いまわしできるようにしてるというのはわかる。
でも、そういうところが使いにくくて普及してないんじゃないかと思うから、T computationで専用で作った関数も特に何もせず
U computationの関数として使えるようになったらもっと使いやすくなると思う。
というかHaskellにはcomputationの概念は百害あって一利なしなんじゃまいか。
296デフォルトの名無しさん
2024/07/04(木) 14:17:13.04ID:PVQ//B0J >>295
君の言うcomputationってどういう定義?
君の言うcomputationってどういう定義?
297デフォルトの名無しさん
2024/07/04(木) 19:36:46.28ID:CIK9cQRa しらんがな。
一応マジレスすると、valueと似ているけどなんか違いがあるもの、ぐらいだろう。
自分の意図としては、”計算機”上で生成されたデータ。
計算機というのは電子計算機に限定されない。
電卓でもいいし、そろばんでもいいし、計算するときのもととなる
数の表現とかをcomputationと呼んでも差し支えないと思ってる。
たとえば、
value:27
に対して電子計算機上だと
11011(2)
で表現されるものがcomputation。
そろばんだったらそろばんの玉の配置。
計算してパチパチ音が出るのが副作用。
逆に言うとvalueの方がわかり難いと思う。計算している計算機の外の世界の
何か数的データみたいな感じがしてわざわざそんな区別いるか?と思う。
一応マジレスすると、valueと似ているけどなんか違いがあるもの、ぐらいだろう。
自分の意図としては、”計算機”上で生成されたデータ。
計算機というのは電子計算機に限定されない。
電卓でもいいし、そろばんでもいいし、計算するときのもととなる
数の表現とかをcomputationと呼んでも差し支えないと思ってる。
たとえば、
value:27
に対して電子計算機上だと
11011(2)
で表現されるものがcomputation。
そろばんだったらそろばんの玉の配置。
計算してパチパチ音が出るのが副作用。
逆に言うとvalueの方がわかり難いと思う。計算している計算機の外の世界の
何か数的データみたいな感じがしてわざわざそんな区別いるか?と思う。
298デフォルトの名無しさん
2024/07/04(木) 23:38:08.08ID:iUDrYol2299デフォルトの名無しさん
2024/07/05(金) 00:05:27.16ID:b38yqPqv >>298
computationがvalueの一つだったら
概念的に computation ⊆ value
になるけど。
少なくとも拡張しているのだから
computation ⊇ value
にならないとおかしくない?
`5 + 3`がcomputationというのは前提にもよるからなんとも言えないと思う。
計算して8(=5+3)を導いたなら8はcomputationだと思うが。
たとえば、掛け算だったとして、九九を唱えてゴサンジュウゴで15を導き出したんなら計算してないからvalueだと思う。
computationがvalueの一つだったら
概念的に computation ⊆ value
になるけど。
少なくとも拡張しているのだから
computation ⊇ value
にならないとおかしくない?
`5 + 3`がcomputationというのは前提にもよるからなんとも言えないと思う。
計算して8(=5+3)を導いたなら8はcomputationだと思うが。
たとえば、掛け算だったとして、九九を唱えてゴサンジュウゴで15を導き出したんなら計算してないからvalueだと思う。
300デフォルトの名無しさん
2024/07/05(金) 00:53:37.68ID:DkqpNxkH >>299
おかしくないよ
OOPでクラスAを継承してクラスBを作った場合(B extends A)を考えてみたら?
`九九を唱えてゴサンジュウゴの結果を導き出す`のがcomputation
導き出された結果と導き出す計算を区別して
おかしくないよ
OOPでクラスAを継承してクラスBを作った場合(B extends A)を考えてみたら?
`九九を唱えてゴサンジュウゴの結果を導き出す`のがcomputation
導き出された結果と導き出す計算を区別して
301デフォルトの名無しさん
2024/07/05(金) 02:03:56.64ID:b38yqPqv やっぱりHaskellスレにcomputationネタわかる人いたんだね。
>>300
>OOPでクラスAを継承してクラスBを作った場合(B extends A)を考えてみたら?
ここは納得。
>導き出された結果と導き出す計算を区別して
なにか f: value -> computation型の関数を念頭に置いて
`f ()`はcomputationと言っているのでは?
意図を勘違いしているかもしれないですが、computationはあくまで導き出された結果でしょう。
それと、関数の返り値を導き出す計算をするにあたって出てくる効果を定義に含めようとしているように感じたのですが、
それはあくまで value -> computation型の関数を計算することに付随する性質であって
computation概念そのものじゃないと思うのですが。
あくまでcomputation概念自体はそういう関数を計算して得られた計算結果なんじゃないですかね。
そう考えると何か不都合な例とかあります?
>>300
>OOPでクラスAを継承してクラスBを作った場合(B extends A)を考えてみたら?
ここは納得。
>導き出された結果と導き出す計算を区別して
なにか f: value -> computation型の関数を念頭に置いて
`f ()`はcomputationと言っているのでは?
意図を勘違いしているかもしれないですが、computationはあくまで導き出された結果でしょう。
それと、関数の返り値を導き出す計算をするにあたって出てくる効果を定義に含めようとしているように感じたのですが、
それはあくまで value -> computation型の関数を計算することに付随する性質であって
computation概念そのものじゃないと思うのですが。
あくまでcomputation概念自体はそういう関数を計算して得られた計算結果なんじゃないですかね。
そう考えると何か不都合な例とかあります?
302デフォルトの名無しさん
2024/07/25(木) 23:56:39.51ID:zdgCFOr2 stateやioモナドってHaskell以外でも使われてるの?
maybeやeitherは関数型でない言語でも同等のものがあるから分かるけど、stateやioはいまいち便利そうな感じがしない
maybeやeitherは関数型でない言語でも同等のものがあるから分かるけど、stateやioはいまいち便利そうな感じがしない
303デフォルトの名無しさん
2024/07/26(金) 05:41:42.96ID:JmafwQnp >>302
それはそうで、IOモナドは他の言語例えばC言語系列だとhoge();の";"部分を数学的に表現しただけだから。
見た目だけなら
x = x + 1;
printf("%d\n", x);
を
return (x + 1) >>= \x -> print x
do形式に直して
x <- return (x + 1)
print x
ただ、x <- の部分は同名の別の変数をシャドーイングしてるので、厳密にメモリの動作まで合わせるならIORefを使う。
Haskellから見たらメモリもIO処理(ファイル処理含む)も等しく外部への入出力という扱い。
だから、実用としては意味が無い。
一見複数行に見えるコードがその気になれば全部一行に出来るという感動はあるが、それだけだ。
Haskellを仲立ちにして数学とプログラミング言語の関係を研究したりには便利。
逆に自力でIOモナドをPythonなどの適当な言語で実装して全てのコードを関数っぽく書ける。
(Pythonだと演算子の自作が出来ないのでf = (>>=)みたいな事になる)
Haskellは便利だから使うものじゃない。
美しいから使うものだ。
あ、でも腐っても最新版は実行速度が結構上がってる(C#/Java並み)ので、選択肢から外される理由も減ってきた気がする。
それはそうで、IOモナドは他の言語例えばC言語系列だとhoge();の";"部分を数学的に表現しただけだから。
見た目だけなら
x = x + 1;
printf("%d\n", x);
を
return (x + 1) >>= \x -> print x
do形式に直して
x <- return (x + 1)
print x
ただ、x <- の部分は同名の別の変数をシャドーイングしてるので、厳密にメモリの動作まで合わせるならIORefを使う。
Haskellから見たらメモリもIO処理(ファイル処理含む)も等しく外部への入出力という扱い。
だから、実用としては意味が無い。
一見複数行に見えるコードがその気になれば全部一行に出来るという感動はあるが、それだけだ。
Haskellを仲立ちにして数学とプログラミング言語の関係を研究したりには便利。
逆に自力でIOモナドをPythonなどの適当な言語で実装して全てのコードを関数っぽく書ける。
(Pythonだと演算子の自作が出来ないのでf = (>>=)みたいな事になる)
Haskellは便利だから使うものじゃない。
美しいから使うものだ。
あ、でも腐っても最新版は実行速度が結構上がってる(C#/Java並み)ので、選択肢から外される理由も減ってきた気がする。
304デフォルトの名無しさん
2024/07/26(金) 05:47:41.29ID:JmafwQnp そこまで気づくと、Gtk2hsとかWin32とかのC/C++からのラッパーライブラリを関数型言語っぽくない!って拒否する気持ちが分からなくなる。
305デフォルトの名無しさん
2024/07/26(金) 06:16:02.54ID:JmafwQnp あ、IOモナドの利点一応あった。
入力関数が他の関数の引数になったり、他の関数に関数合成出来ない。
Pythonのprint(input())みたいなコードや、len(input())みたいなコードは無理。
ここをしっかり分けることで、そういう変な使い方でのエラーは出ない。
もっと広い視点で言えば、入出力がIOモナドという型で分かれているのでネストの深いループの中でも入出力時に型を意識する必要があるので、そういうバグが大分減る。
手続き型関数型関係なく、ネストの深いループの中のデータが今どんな状態かを頭の中で把握出来る人はそう多くない。
だから、デバッグ時に解きほぐしていくんだが、関数型の方が切り分けしやすいかも?
入力関数が他の関数の引数になったり、他の関数に関数合成出来ない。
Pythonのprint(input())みたいなコードや、len(input())みたいなコードは無理。
ここをしっかり分けることで、そういう変な使い方でのエラーは出ない。
もっと広い視点で言えば、入出力がIOモナドという型で分かれているのでネストの深いループの中でも入出力時に型を意識する必要があるので、そういうバグが大分減る。
手続き型関数型関係なく、ネストの深いループの中のデータが今どんな状態かを頭の中で把握出来る人はそう多くない。
だから、デバッグ時に解きほぐしていくんだが、関数型の方が切り分けしやすいかも?
306デフォルトの名無しさん
2024/07/26(金) 06:20:50.81ID:EERDttnJ Halkellのその先が見たい?
Rustにその答えが全て詰まっている
Rustにその答えが全て詰まっている
307デフォルトの名無しさん
2024/07/26(金) 08:11:21.54ID:3P5OnSpM どなたか教えてください。
数学の構成や命題の証明に使うならば、HaskellとOCamlはどちらがよいでしょうか。
数学の構成や命題の証明に使うならば、HaskellとOCamlはどちらがよいでしょうか。
308デフォルトの名無しさん
2024/07/26(金) 12:15:47.14ID:f34zQmtT Rustは、メモリが見えすぎるのがイヤだー
大したもの書かないから、GCありでお願いしたい
大したもの書かないから、GCありでお願いしたい
309デフォルトの名無しさん
2024/07/26(金) 17:24:09.33ID:HoH4md/R310デフォルトの名無しさん
2024/07/26(金) 17:58:43.47ID:dth0vnjc 数学の構成?
311デフォルトの名無しさん
2024/07/27(土) 00:29:15.86ID:r3Qeb3es >>307
Coqという証明支援プログラミング言語をお使い下さい。
Haskellでも型プログラミングでゴリゴリ自力で命題の証明出来るそうですが、ある程度自動化されている専用言語の方が良いでしょう。
Coqはその中でも日本語情報が多いです。
Coqという証明支援プログラミング言語をお使い下さい。
Haskellでも型プログラミングでゴリゴリ自力で命題の証明出来るそうですが、ある程度自動化されている専用言語の方が良いでしょう。
Coqはその中でも日本語情報が多いです。
312デフォルトの名無しさん
2024/07/27(土) 00:43:27.29ID:r3Qeb3es >>306
実用言語、特に組み込み分野を置き換えるのに期待されてる。
特集記事が無くてもお題スレ見たいな、Rustで問題を解こう的な連載が続いてる辺り、
特にinterfaceの編集陣の熱量は感じる。
Haskellも先駆者の記事によればWeb向けとしては神言語だそうだ。
ただ、周辺環境が未整備なだけで。
(なので、自分で全部作るという茨の道を進む「覚悟」が必要だとか)
未だにそうではないことを祈るが…。
実用言語、特に組み込み分野を置き換えるのに期待されてる。
特集記事が無くてもお題スレ見たいな、Rustで問題を解こう的な連載が続いてる辺り、
特にinterfaceの編集陣の熱量は感じる。
Haskellも先駆者の記事によればWeb向けとしては神言語だそうだ。
ただ、周辺環境が未整備なだけで。
(なので、自分で全部作るという茨の道を進む「覚悟」が必要だとか)
未だにそうではないことを祈るが…。
313デフォルトの名無しさん
2024/07/27(土) 00:53:19.48ID:r3Qeb3es >>307
数の構成の方は、代数的型と基本的な方だと(一部)derivingで自動生成してもらえるから、Haskellはとても楽。
print関数で表示する部分だけでも自動生成してもらう価値はある。
(Read,Enum,Ordで生成されるのは確認済み)
data Nat = Zero | Succ Nat deriving (Show)
連続関数はPCそのものの限界で無理。
代数的型でメモリの続く限りの範囲なら少数も作れるかもしれない。
(その前にリストなり何なりで10進数位取り記法を導入しないと、Natは無限進数なので小数点第1位が1万とか、無限に桁上がりしない構造になる)
数の構成の方は、代数的型と基本的な方だと(一部)derivingで自動生成してもらえるから、Haskellはとても楽。
print関数で表示する部分だけでも自動生成してもらう価値はある。
(Read,Enum,Ordで生成されるのは確認済み)
data Nat = Zero | Succ Nat deriving (Show)
連続関数はPCそのものの限界で無理。
代数的型でメモリの続く限りの範囲なら少数も作れるかもしれない。
(その前にリストなり何なりで10進数位取り記法を導入しないと、Natは無限進数なので小数点第1位が1万とか、無限に桁上がりしない構造になる)
314デフォルトの名無しさん
2024/07/27(土) 13:46:44.73ID:f/jP9uGd315デフォルトの名無しさん
2024/07/27(土) 16:19:23.58ID:Z663WedI >>313
ありがとうございます。
ありがとうございます。
316デフォルトの名無しさん
2024/07/27(土) 17:29:46.87ID:sW1zoNGb317デフォルトの名無しさん
2024/07/27(土) 21:26:10.11ID:wvv58UYW 知ってた
318デフォルトの名無しさん
2024/07/27(土) 23:34:35.07ID:r3Qeb3es319デフォルトの名無しさん
2024/08/01(木) 12:24:32.72ID:XzWUPxYY プロセッサメーカはAIブームと見るやこぞってAI処理特化プロセッサの開発競争
関数型言語に特徴的な処理に特化したプロセッサは誰も作ってくれない
関数型言語に特徴的な処理に特化したプロセッサは誰も作ってくれない
320デフォルトの名無しさん
2024/08/01(木) 16:36:21.75ID:rWBa8MOA それ必要か?
321デフォルトの名無しさん
2024/08/04(日) 23:21:47.06ID:y1wQ9MUm >>319
スタックコンピューターは、Lispの時にぽしゃった。
スタックコンピューターは、Lispの時にぽしゃった。
レスを投稿する
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 ★2 [おっさん友の会★]
- 【独占スクープ】元TOKIOの松岡昌宏がSTARTO社を“退所”へ「国分のコンプライアンス違反」問題をきっかけに決断、12月から単独で活動 [Ailuropoda melanoleuca★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
- (´・ω・`)おはよ
- 中国専門家の興梠一郎先生「実は中国が一番焦ってるのが総領事の暴言だ。中国は今かなり追い詰められている」 [904151406]
- 法律が無くなったら殺人事件って増える?
