関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト)
http://www.haskell.org/
前スレ
関数型プログラミング言語Haskell Part28
http://echo.2ch.net/test/read.cgi/tech/1428597032/
探検
関数型プログラミング言語Haskell Part30 [無断転載禁止]©2ch.net
レス数が900を超えています。1000を超えると表示できなくなるよ。
2017/01/15(日) 23:43:54.28ID:Vh4eztBk
805デフォルトの名無しさん
2017/08/08(火) 22:23:03.19ID:OEct+pCd >>804
仮引数が束縛しているのはそのスコープ内だけだと思っていましたが、
違うのでしょうか。
let a = map id (enumerate 1); b = map id (enumerate 1)
これは2度同じ計算 (enumerate 1 の評価) がされませんか?
仮引数が束縛しているのはそのスコープ内だけだと思っていましたが、
違うのでしょうか。
let a = map id (enumerate 1); b = map id (enumerate 1)
これは2度同じ計算 (enumerate 1 の評価) がされませんか?
806デフォルトの名無しさん
2017/08/08(火) 22:33:15.60ID:aoRcppZr 実際に起こっているのはこういうことなんだろうな
let a = map id (enumerate 1); b = a; c=a
let a = map id (enumerate 1); b = a; c=a
807デフォルトの名無しさん
2017/08/09(水) 00:17:08.56ID:VTzajaTq >>799-800
嘘乙
嘘乙
808デフォルトの名無しさん
2017/08/09(水) 02:22:31.31ID:mQsXelmt Glasgow Haskell Compiler上の遅延オブジェクト再利用手法の設計と実装
https://www.jstage.jst.go.jp/article/jssst/32/1/32_1_253/_pdf
https://www.jstage.jst.go.jp/article/jssst/32/1/32_1_253/_pdf
809デフォルトの名無しさん
2017/08/09(水) 05:51:36.85ID:L1lV7cdZ ・愚直にパラメーターマシマシの関数
・そのごちゃごちゃしたパラメーターをデータ構造にまとめてコードの視認性と一目理解可能性を向上したコード
後者が前者より2倍近く時間かかって悲しい
データ構造の更新に思いの外時間がかかってるのだろうか
データ構造の一部だけ更新って、変える部分だけ新しく作って、後のパラメーターは元のデータのそれへポインタコピーするだけだと思うんですけど
それでもオーバーヘッド嵩むもんなんすかね
ごちゃごちゃ版の、一つパラメーター更新して再帰で関数呼び出すだけなのと、
データ構造にまとめた版の(データ構造の)一つパラメーター更新して再帰で関数呼び出すのとは
何が処理の手間的に違うんですかね
いいからパラメーター全部そのまま関数に並べ立てた方が速いんだよって言われてるようで悲しい
性能を犠牲にせずにメンテ力アップしたい
・そのごちゃごちゃしたパラメーターをデータ構造にまとめてコードの視認性と一目理解可能性を向上したコード
後者が前者より2倍近く時間かかって悲しい
データ構造の更新に思いの外時間がかかってるのだろうか
データ構造の一部だけ更新って、変える部分だけ新しく作って、後のパラメーターは元のデータのそれへポインタコピーするだけだと思うんですけど
それでもオーバーヘッド嵩むもんなんすかね
ごちゃごちゃ版の、一つパラメーター更新して再帰で関数呼び出すだけなのと、
データ構造にまとめた版の(データ構造の)一つパラメーター更新して再帰で関数呼び出すのとは
何が処理の手間的に違うんですかね
いいからパラメーター全部そのまま関数に並べ立てた方が速いんだよって言われてるようで悲しい
性能を犠牲にせずにメンテ力アップしたい
810デフォルトの名無しさん
2017/08/09(水) 05:57:53.35ID:L1lV7cdZ 多くの場合を受け取って、後でcaseなどで引数の場合分けをするより
トップレベルで最初に引数のパターンマッチで場合分けしてから始める書き方の方が速いんですかね
後者はなんか何度も関数名書かなきゃいけなくて汚い感じするんですが。同じlet式もボイラープレートのようにまた書かなきゃならないし
でも後者の方が高速動作する(経験則)みたいで悔しい
トップレベルで最初に引数のパターンマッチで場合分けしてから始める書き方の方が速いんですかね
後者はなんか何度も関数名書かなきゃいけなくて汚い感じするんですが。同じlet式もボイラープレートのようにまた書かなきゃならないし
でも後者の方が高速動作する(経験則)みたいで悔しい
811デフォルトの名無しさん
2017/08/09(水) 07:31:58.59ID:azQJOuJj vectorパッケージ使ってて、ベンチマークとるとVector.Fusion.UtilとVector.Fusion.Stream.Monadicにリソースが割かれてるんだけど、
stream fusionてコンパイル時に効いてて、ランタイム時には出てこないと思ってたのだが、違うんかね?
stream fusionてコンパイル時に効いてて、ランタイム時には出てこないと思ってたのだが、違うんかね?
812デフォルトの名無しさん
2017/08/10(木) 00:20:12.66ID:joXozDrb 本物のプログラマはHaskellを使う - 第31回
http://itpro.nikkeibp.co.jp/article/COLUMN/20090512/329783/
> これは,GHCの最適化機能の一つである「共通部分式の削除(CSE:Common Subexpression Elimination)」によって,共通する式「unsafeVal 10」がメモ化されたためです。これにより「unsafeVal 10」は1回しか評価・実行されなくなってしまいます。
http://itpro.nikkeibp.co.jp/article/COLUMN/20090512/329783/
> これは,GHCの最適化機能の一つである「共通部分式の削除(CSE:Common Subexpression Elimination)」によって,共通する式「unsafeVal 10」がメモ化されたためです。これにより「unsafeVal 10」は1回しか評価・実行されなくなってしまいます。
813デフォルトの名無しさん
2017/08/10(木) 00:21:53.72ID:joXozDrb > Haskellには第8回で説明した「メモ化」という機能があるため,同じ式が複数回,評価・実行されることはありません。
814デフォルトの名無しさん
2017/08/10(木) 01:41:50.38ID:wtM226NM >>809
パラメータごちゃごちゃってのが多引数関数なら、Haskellの関数はカリー化されてるので
変更するパラメータの箇所によっては関数定義が使いまわせて効率がよくなってる、かも
末尾再帰化で局所関数作ってやるみたいに、
外からは定義したデータ構造で受け取って、
関数内で再帰回すときはばらした局所関数を使うとかはどうか
パラメータごちゃごちゃってのが多引数関数なら、Haskellの関数はカリー化されてるので
変更するパラメータの箇所によっては関数定義が使いまわせて効率がよくなってる、かも
末尾再帰化で局所関数作ってやるみたいに、
外からは定義したデータ構造で受け取って、
関数内で再帰回すときはばらした局所関数を使うとかはどうか
815デフォルトの名無しさん
2017/08/10(木) 06:48:00.63ID:Gy6ZNt2K メモ化じゃなくてグラフ簡約では?
816デフォルトの名無しさん
2017/08/10(木) 07:14:52.40ID:7mVrofJh http://itpro.nikkeibp.co.jp/article/COLUMN/20070305/263828/
>本物のプログラマはHaskellを使う
>第8回 遅延評価の仕組み
>この問題を解決するのが必要呼び出しです。必要呼び出しでは,
>同じ変数から束縛された項はポインタによって共有され,
>一度簡約された項をもう一度使用する場合には最初の計算によってキャッシュされた解を利用します。
>項を共有することにより,構文はもはや通常の木構造ではなくグラフ(graph)構造を取ることになります。
>そのため,このような簡約方法を「グラフ簡約(あるいはグラフ簡約法,graph reduction)」と呼びます。
>また,同じ式の評価のために,キャッシュされた解を使う手法のことを「メモ化(memoization)」といいます。
>本物のプログラマはHaskellを使う
>第8回 遅延評価の仕組み
>この問題を解決するのが必要呼び出しです。必要呼び出しでは,
>同じ変数から束縛された項はポインタによって共有され,
>一度簡約された項をもう一度使用する場合には最初の計算によってキャッシュされた解を利用します。
>項を共有することにより,構文はもはや通常の木構造ではなくグラフ(graph)構造を取ることになります。
>そのため,このような簡約方法を「グラフ簡約(あるいはグラフ簡約法,graph reduction)」と呼びます。
>また,同じ式の評価のために,キャッシュされた解を使う手法のことを「メモ化(memoization)」といいます。
817デフォルトの名無しさん
2017/08/10(木) 11:53:35.98ID:Mbfm9qrf 共通部分式削除か
もしバグの原因が最適化だったら簡単だな
最適化を無効にするだけでわかる
もしバグの原因が最適化だったら簡単だな
最適化を無効にするだけでわかる
818デフォルトの名無しさん
2017/08/10(木) 15:16:55.85ID:7Zrve9l8 共通部分式削除ではないしバグでもない
819デフォルトの名無しさん
2017/08/10(木) 16:49:36.71ID:R2w5AQk8 ぼく、グラフ簡約がいつされていつされないのかよく解ってない(`・ェ・´)
820デフォルトの名無しさん
2017/08/10(木) 22:16:48.24ID:fh9/jf6h 基本的なこと
http://www.kotha.net/hperf/basics.html
> 関数の自動メモ化はない
> Haskellの関数は同じ引数で呼ぶと同じ結果を返すので透過的にメモ化が可能だが、GHCはそれを行わない。
> 局所的な最適化によってメモ化と同じ結果になることはあるが、一般には期待できない。
> メモ化が必要なら「引数->結果」の対応を保存するデータ構造(Map、Arrayなど)を明示的に用意する必要がある。
http://www.kotha.net/hperf/basics.html
> 関数の自動メモ化はない
> Haskellの関数は同じ引数で呼ぶと同じ結果を返すので透過的にメモ化が可能だが、GHCはそれを行わない。
> 局所的な最適化によってメモ化と同じ結果になることはあるが、一般には期待できない。
> メモ化が必要なら「引数->結果」の対応を保存するデータ構造(Map、Arrayなど)を明示的に用意する必要がある。
821デフォルトの名無しさん
2017/08/10(木) 22:27:51.24ID:fh9/jf6h GHCのこと
http://www.kotha.net/hperf/ghc.html
> プログラムの低水準の振る舞い(たとえば、「このループでメモリ確保は発生する?」「この式はどのタイミングで評価される?」)を理解したり、GHCの最適化の結果を見たりするのには、Core言語形式の中間出力を読むと良い。
> 特に、小さいループを可能な限り高速化したい場合など、最適化後のCore出力を比較しながらコードをいじるのが有効なことがある。
> Core形式の最終形(最適化された後、STG言語に変換される直前)は-ddump-prepで読める。
http://www.kotha.net/hperf/ghc.html
> プログラムの低水準の振る舞い(たとえば、「このループでメモリ確保は発生する?」「この式はどのタイミングで評価される?」)を理解したり、GHCの最適化の結果を見たりするのには、Core言語形式の中間出力を読むと良い。
> 特に、小さいループを可能な限り高速化したい場合など、最適化後のCore出力を比較しながらコードをいじるのが有効なことがある。
> Core形式の最終形(最適化された後、STG言語に変換される直前)は-ddump-prepで読める。
822デフォルトの名無しさん
2017/08/10(木) 23:42:17.05ID:7Zrve9l8 >>820
http://www.kotha.net/hperf/basics.html
Haskellの言語仕様(ja)は式の評価順序を定めていないが、
GHCを始めとする有名な処理系は全て「必要呼び(call by need)」という評価戦略を基本にしている。
必要呼び戦略のもう一つの特徴は引数の自動メモ化である。
ある関数の仮引数が、その関数の本体に複数回出現したとしても、対応する実引数の評価は高々一回しか発生しない。
http://www.kotha.net/hperf/basics.html
Haskellの言語仕様(ja)は式の評価順序を定めていないが、
GHCを始めとする有名な処理系は全て「必要呼び(call by need)」という評価戦略を基本にしている。
必要呼び戦略のもう一つの特徴は引数の自動メモ化である。
ある関数の仮引数が、その関数の本体に複数回出現したとしても、対応する実引数の評価は高々一回しか発生しない。
823デフォルトの名無しさん
2017/08/11(金) 00:45:37.86ID:Ze2QVHug 困ったときはhaskell-masterことtanakhに助けを求める
824デフォルトの名無しさん
2017/08/11(金) 03:54:12.02ID:7orZPIZ6 フィボナッチ数を漸化式で単に実装したとき、そのままだと深い部分で同じ引数による呼び出しが無数に発生してると思うんですが
自動メモ化してくれないんすね
自動メモ化してくれないんすね
825デフォルトの名無しさん
2017/08/11(金) 04:15:27.98ID:L7AEIGon826デフォルトの名無しさん
2017/08/11(金) 05:49:13.91ID:ZqUin61F 言語別平均年収ランキング
1位Scala 626万円
2位Python 601万円
3位Kotlin 577万円
4位Swift, Ruby 562万円
6位Java 552万円
7位Perl 551万円
8位 C言語 538万円
9位JavaScript 536万円
10位PHP 522万円
11位COBOL 509万円
以下は求人が少ないためランキングから除外
Groovy 680万円
Haskell 670万円
Erlang 604万円
LISP 581万円
尚、C++, C#は調査対象外とする
1位Scala 626万円
2位Python 601万円
3位Kotlin 577万円
4位Swift, Ruby 562万円
6位Java 552万円
7位Perl 551万円
8位 C言語 538万円
9位JavaScript 536万円
10位PHP 522万円
11位COBOL 509万円
以下は求人が少ないためランキングから除外
Groovy 680万円
Haskell 670万円
Erlang 604万円
LISP 581万円
尚、C++, C#は調査対象外とする
827デフォルトの名無しさん
2017/08/11(金) 10:48:20.88ID:Ca8C76qb828デフォルトの名無しさん
2017/08/11(金) 10:55:08.08ID:mLIKyCPo 難しすぎて習得者が少なすぎて調査不能なんだろう
829デフォルトの名無しさん
2017/08/11(金) 11:06:36.65ID:QQDjRimB 求人数が少ないから除外?
どうしてもその言語じゃなきゃだけど、その言語使える人が少ないって方が給料良いんだが。
(あと金出す側の資金力にもよる)
Fortranとか意外と良いぞ。
金融系なら関数型言語。
どうしてもその言語じゃなきゃだけど、その言語使える人が少ないって方が給料良いんだが。
(あと金出す側の資金力にもよる)
Fortranとか意外と良いぞ。
金融系なら関数型言語。
830デフォルトの名無しさん
2017/08/11(金) 11:07:39.31ID:QQDjRimB あ、Fortranは大学がスパコンで使うとかの場合ね。
831デフォルトの名無しさん
2017/08/11(金) 11:15:12.10ID:07jWFZnC いやC++C#は多いだろうよ
832デフォルトの名無しさん
2017/08/11(金) 11:32:50.22ID:eQbA+Atw なぜ 828 がジョークだと分からないんだw
831 も 829 にマジレスするなら、828 がジョークだと教えないと
(まさか 831 は 828 に対してのレスってことはないよね?)
831 も 829 にマジレスするなら、828 がジョークだと教えないと
(まさか 831 は 828 に対してのレスってことはないよね?)
833デフォルトの名無しさん
2017/08/11(金) 14:56:02.48ID:0Mux6fCC >>826の元記事はこれ
プログラミング言語別の平均年収ランキング、1位は「Scala」 - ITmedia NEWS
http://www.itmedia.co.jp/news/articles/1708/10/news073.html
プログラミング言語別の平均年収ランキング、1位は「Scala」 - ITmedia NEWS
http://www.itmedia.co.jp/news/articles/1708/10/news073.html
834デフォルトの名無しさん
2017/08/11(金) 20:01:49.81ID:rgIYrPBr グラフ簡約で物理同値が保証されてることを「メモ化」とはいわなくない?
835デフォルトの名無しさん
2017/08/11(金) 20:33:13.01ID:o2mcpSct836デフォルトの名無しさん
2017/08/11(金) 21:13:47.87ID:eQbA+Atw メモ化って memorization の訳だと思ってたが、 memoization という造語(1968年初出)の訳だったのか
んで、メモ化は簡約結果が同値であることを利用して、
計算結果を使いまわす研究での用語だったみたいね
ttps://ja.wikipedia.org/wiki/メモ化
んで、メモ化は簡約結果が同値であることを利用して、
計算結果を使いまわす研究での用語だったみたいね
ttps://ja.wikipedia.org/wiki/メモ化
837デフォルトの名無しさん
2017/08/12(土) 00:24:09.94ID:yWjB6ujN Haskell でのデバッグ - あどけない話
http://d.hatena.ne.jp/kazu-yamamoto/20120606/1338957783
http://d.hatena.ne.jp/kazu-yamamoto/20120606/1338957783
838デフォルトの名無しさん
2017/08/12(土) 19:28:27.04ID:G1Oa8HnK839デフォルトの名無しさん
2017/08/12(土) 21:06:06.85ID:vdGf/ex1 参照透明性を利用する
一度評価したらもう動かないのだという性質を利用するのだ
コンテナと組み合わせてほら!
一度評価したらもう動かないのだという性質を利用するのだ
コンテナと組み合わせてほら!
840デフォルトの名無しさん
2017/08/12(土) 22:47:13.92ID:zuB4Y/rr >>838
trace関数のソースにこう書かれてた
The 'trace' function should /only/ be used for debugging, or for monitoring
execution. The function is not referentially transparent: its type indicates
that it is a pure function but it has the side effect of outputting the
trace message.
他の関数と同様に考えるわけにはいかないようだ
trace関数のソースにこう書かれてた
The 'trace' function should /only/ be used for debugging, or for monitoring
execution. The function is not referentially transparent: its type indicates
that it is a pure function but it has the side effect of outputting the
trace message.
他の関数と同様に考えるわけにはいかないようだ
841デフォルトの名無しさん
2017/08/13(日) 00:48:15.11ID:SYaWjJhn Python, Kotlin, underscore.js にも、memoize がある
ナップサック問題で、使う
ナップサック問題で、使う
842デフォルトの名無しさん
2017/08/13(日) 01:44:46.49ID:Pg7jRQiA Let vs. Where - HaskellWiki
https://wiki.haskell.org/Let_vs._Where#Lambda_Lifting
これってwhereは引数に変換されるってこと?(英語うまく訳せなくて分からない)
https://wiki.haskell.org/Let_vs._Where#Lambda_Lifting
これってwhereは引数に変換されるってこと?(英語うまく訳せなくて分からない)
843デフォルトの名無しさん
2017/08/13(日) 06:26:42.63ID:BxbLY5/X 競技プログラミングではデフォルトライブラリしか使えないので
高度なアルゴリズムは自分で勉強して実装しておいたものをコピペするしかないのだ
高度なアルゴリズムは自分で勉強して実装しておいたものをコピペするしかないのだ
844デフォルトの名無しさん
2017/08/13(日) 10:34:38.57ID:fRo9GRp1 モナドってなんなの?
845デフォルトの名無しさん
2017/08/13(日) 12:11:08.44ID:ndxDWak1 文脈
846デフォルトの名無しさん
2017/08/13(日) 13:12:26.05ID:mWeUlEpW 山本タソは「裏面配線」って言ってたかな
847デフォルトの名無しさん
2017/08/13(日) 17:47:54.48ID:fRo9GRp1 関数プログラミングって文字列型って上手くあつかえるの?
オブジェクト指向の最大の欠点って「文字列を上手く扱えない」ところに
あると思うんだよね。
オブジェクト指向の最大の欠点って「文字列を上手く扱えない」ところに
あると思うんだよね。
848デフォルトの名無しさん
2017/08/13(日) 17:51:31.77ID:fRo9GRp1849デフォルトの名無しさん
2017/08/13(日) 19:22:11.54ID:zbgzOget >>842
違うよ。
ある関数の定義に使う補助的な関数の定義は、独立してトップレベルに置く事もできるし、
let や where を使って関数定義の中に置く事もできるよ、って言ってる。
関数内部で定義されていた関数を外に出して独立させることを lambda lifting と言って、
逆に外にあった関数を別の関数の内部で定義することを lambda dropping と言うんだ。
Haskell を使うだけならこんな理解で十分なんだけど、
もともとは関数型言語の処理系の研究で出てきた用語なんで、
その辺りまで深く学びたいのなら、やつぱり英語を読めないと難しいかも。
ちなみに、そのリンク先の [3 Lambda Lifting] と比べれば、
その直後の [4 Problems with where] の方が衝撃的な内容だね。
Haskell を実用的に使っている人にとってはこっちの方が大事な内容だよ。
違うよ。
ある関数の定義に使う補助的な関数の定義は、独立してトップレベルに置く事もできるし、
let や where を使って関数定義の中に置く事もできるよ、って言ってる。
関数内部で定義されていた関数を外に出して独立させることを lambda lifting と言って、
逆に外にあった関数を別の関数の内部で定義することを lambda dropping と言うんだ。
Haskell を使うだけならこんな理解で十分なんだけど、
もともとは関数型言語の処理系の研究で出てきた用語なんで、
その辺りまで深く学びたいのなら、やつぱり英語を読めないと難しいかも。
ちなみに、そのリンク先の [3 Lambda Lifting] と比べれば、
その直後の [4 Problems with where] の方が衝撃的な内容だね。
Haskell を実用的に使っている人にとってはこっちの方が大事な内容だよ。
850デフォルトの名無しさん
2017/08/13(日) 20:15:07.01ID:DrQ+cSjE Haskellという土台の上に、オレオレ言語を構築する。それがモナドだ
Haskell上で動作する『ぼくのかんがえたさいきょうのげんご』
DSLプラットフォーム
Haskell上で動作する『ぼくのかんがえたさいきょうのげんご』
DSLプラットフォーム
851デフォルトの名無しさん
2017/08/13(日) 20:19:51.10ID:qvBBF+tW >>849
衝撃だけど実際どれくらいパフォーマンス上のインパクトがあるの?
衝撃だけど実際どれくらいパフォーマンス上のインパクトがあるの?
852デフォルトの名無しさん
2017/08/13(日) 21:59:10.19ID:zbgzOget >>851
試せばすぐに分かるが、あのフィボナッチ数のサンプルでは全く大した事なかったりする。
確かに後者の方が遅い代わりにメモリ効率いいけど、ほとんど差が出ない事に驚くほどだよ。
差がはっきり出る例を作る方が難しいと思う。
衝撃なのはパフォーマンスの差じゃなくて、単に引数を省略しただけで
コンパイルの結果に差が出ることがある、という事実。
GHCにはこういうことがあると、頭の片隅にでも入れておいた方がいいね。
他にも「単に***を変えただけで何で意図したように動かないの?」
ってなるようなコンパイラの仕様があるだろうから、
それに出くわした時に、もしかしてと気づければ無駄に悩む時間が省ける。
試せばすぐに分かるが、あのフィボナッチ数のサンプルでは全く大した事なかったりする。
確かに後者の方が遅い代わりにメモリ効率いいけど、ほとんど差が出ない事に驚くほどだよ。
差がはっきり出る例を作る方が難しいと思う。
衝撃なのはパフォーマンスの差じゃなくて、単に引数を省略しただけで
コンパイルの結果に差が出ることがある、という事実。
GHCにはこういうことがあると、頭の片隅にでも入れておいた方がいいね。
他にも「単に***を変えただけで何で意図したように動かないの?」
ってなるようなコンパイラの仕様があるだろうから、
それに出くわした時に、もしかしてと気づければ無駄に悩む時間が省ける。
853デフォルトの名無しさん
2017/08/13(日) 22:05:27.98ID:IBmKuvX6 STモナドとSTArrayの理解を深めるのに向いてる書籍やサイトなどがあれば英語でもいいので教えていただきたいです
競技プログラミングで少し行き詰まってて
競技プログラミングで少し行き詰まってて
854デフォルトの名無しさん
2017/08/13(日) 22:12:47.72ID:qvBBF+tW855デフォルトの名無しさん
2017/08/13(日) 22:35:47.24ID:3dVRXwBQ >>851
fib1 40は1秒かからなかったけど
fib2 40だと37秒かかった
fib1 = (map fib1' [0 ..] !!)
where
fib1' 0 = 0
fib1' 1 = 1
fib1' n = fib1 (n - 1) + fib1 (n - 2)
fib2 x = map fib2' [0 ..] !! x
where
fib2' 0 = 0
fib2' 1 = 1
fib2' n = fib2 (n - 1) + fib2 (n - 2)
fib1 40は1秒かからなかったけど
fib2 40だと37秒かかった
fib1 = (map fib1' [0 ..] !!)
where
fib1' 0 = 0
fib1' 1 = 1
fib1' n = fib1 (n - 1) + fib1 (n - 2)
fib2 x = map fib2' [0 ..] !! x
where
fib2' 0 = 0
fib2' 1 = 1
fib2' n = fib2 (n - 1) + fib2 (n - 2)
856デフォルトの名無しさん
2017/08/13(日) 22:42:29.03ID:3dVRXwBQ857デフォルトの名無しさん
2017/08/13(日) 22:56:30.39ID:Pg7jRQiA >>849
教えてくれてありがとう
教えてくれてありがとう
858デフォルトの名無しさん
2017/08/13(日) 23:03:01.35ID:Kt+T0SXe 毎回 let 束縛し直すから遅い、って凄えなこれ
手動 eta-reduction 必須、みたいなんか
手動 eta-reduction 必須、みたいなんか
859デフォルトの名無しさん
2017/08/13(日) 23:18:59.79ID:AxVfgjdD >>855
fib3 40、fib4 40は fib2 40と同じくらい
fib3 =
let fib3' 0 = 0
fib3' 1 = 1
fib3' n = fib3 (n - 1) + fib3 (n - 2)
in (map fib3' [0 ..] !!)
fib4 x =
let fib4' 0 = 0
fib4' 1 = 1
fib4' n = fib4 (n - 1) + fib4 (n - 2)
in map fib4' [0 ..] !! x
fib3 40、fib4 40は fib2 40と同じくらい
fib3 =
let fib3' 0 = 0
fib3' 1 = 1
fib3' n = fib3 (n - 1) + fib3 (n - 2)
in (map fib3' [0 ..] !!)
fib4 x =
let fib4' 0 = 0
fib4' 1 = 1
fib4' n = fib4 (n - 1) + fib4 (n - 2)
in map fib4' [0 ..] !! x
860デフォルトの名無しさん
2017/08/13(日) 23:39:51.65ID:DrQ+cSjE >>842
なにこれこわい
なにこれこわい
861デフォルトの名無しさん
2017/08/14(月) 00:09:46.90ID:CgEdc2Wx862デフォルトの名無しさん
2017/08/14(月) 00:40:48.93ID:qlMtZwAF >>840
traceはメモ化には使えないってことですか
>>851-852
試してみた
使用メモリがだいぶ違う、低スペックPCなので20でも実行時間に差が出た
http://i.imgur.com/lJUUCAs.png
http://i.imgur.com/zXHSwNH.png
traceはメモ化には使えないってことですか
>>851-852
試してみた
使用メモリがだいぶ違う、低スペックPCなので20でも実行時間に差が出た
http://i.imgur.com/lJUUCAs.png
http://i.imgur.com/zXHSwNH.png
863デフォルトの名無しさん
2017/08/14(月) 01:18:11.31ID:BK9BhUbr モナドを取り入れると明らかに型が違うのが分かる
Identityモナドでもいいんだが
問題なのは引数の省略ではなくコンストラクタの省略ではないか
fib1 = return (map fib [0 ..] !!)
fib2 x = return (map fib [0 ..] !! x)
Identityモナドでもいいんだが
問題なのは引数の省略ではなくコンストラクタの省略ではないか
fib1 = return (map fib [0 ..] !!)
fib2 x = return (map fib [0 ..] !! x)
864デフォルトの名無しさん
2017/08/14(月) 01:40:22.76ID:tyQzDLaM 呼び出し毎の関数束縛が遅いってことかね
値の束縛やトップレベルの関数呼び出しだとどの程度だろう
値の束縛やトップレベルの関数呼び出しだとどの程度だろう
865デフォルトの名無しさん
2017/08/14(月) 03:27:39.46ID:YjoaiCYq >>861
たしかに最適化で差異がなくなった
最適化なし -O0
fib1 (sec: 0.00 mem: 3456) https://paiza.io/projects/0LYONUr9fsU2GCX0AE8A_g
fib2 (sec: 0.87 mem: 4608) https://paiza.io/projects/iNAIEVZM5IY5uLxzJ_QJ7w
最適化あり -O1
fib1 (sec: 0.00 mem: 3280) https://paiza.io/projects/XCnm40B0C1HcbuAIBGyUFw
fib2 (sec: 0.00 mem: 3312) https://paiza.io/projects/Et1N4r-vdxXjrid_7hn6PA
計測手段 /usr/bin/time -f "sec: %e\tmem: %M"
たしかに最適化で差異がなくなった
最適化なし -O0
fib1 (sec: 0.00 mem: 3456) https://paiza.io/projects/0LYONUr9fsU2GCX0AE8A_g
fib2 (sec: 0.87 mem: 4608) https://paiza.io/projects/iNAIEVZM5IY5uLxzJ_QJ7w
最適化あり -O1
fib1 (sec: 0.00 mem: 3280) https://paiza.io/projects/XCnm40B0C1HcbuAIBGyUFw
fib2 (sec: 0.00 mem: 3312) https://paiza.io/projects/Et1N4r-vdxXjrid_7hn6PA
計測手段 /usr/bin/time -f "sec: %e\tmem: %M"
866デフォルトの名無しさん
2017/08/14(月) 05:10:48.34ID:8PjQyPOp 最適化かくにん!
よかった。
よかった。
867デフォルトの名無しさん
2017/08/14(月) 12:00:31.24ID:vFMuIdhl やはり、最適化かかってんのね。
安心したけど書いてるのがもう少し速くなるかなと思ってたので、残念なような、、
linuxでgtk2hsでつくってたのをwin10に移植しようとしたら、うまくいかなかった。
gtk2hsの公式も落ちてたし、HaskellのGUIは今は何が主流 or ポテンシャル高い、なんですかね?
安心したけど書いてるのがもう少し速くなるかなと思ってたので、残念なような、、
linuxでgtk2hsでつくってたのをwin10に移植しようとしたら、うまくいかなかった。
gtk2hsの公式も落ちてたし、HaskellのGUIは今は何が主流 or ポテンシャル高い、なんですかね?
868デフォルトの名無しさん
2017/08/14(月) 14:52:12.07ID:yxoqAlkZ すまん、いろんなモナドをJavaとかPythonとかのコードで
表してくれ・・・
なんとなく言いたいことは分かったとしても、はっきりとモナドが
なんなのかが分からない。
クラスとは何が違うのか。
表してくれ・・・
なんとなく言いたいことは分かったとしても、はっきりとモナドが
なんなのかが分からない。
クラスとは何が違うのか。
869デフォルトの名無しさん
2017/08/14(月) 15:06:44.92ID:Au3l8RWH ひところ GUI の為の FRP に熱を上げていた連中は今、何に熱を上げてるの?
870デフォルトの名無しさん
2017/08/14(月) 17:17:03.93ID:emaMcYYJ >>868
>すまん、いろんなモナドをJavaとかPythonとかのコードで
>表してくれ・・・
JavaかPythonのスレ逝くべきだと思うの
>なんとなく言いたいことは分かったとしても、はっきりとモナドが
>なんなのかが分からない。
>クラスとは何が違うのか。
「なんとなく」もわかってないと思うよ
あと「モナドは自己関手の圏におけるモノイド対象以上でも以下でもない」が本質的な回答
>すまん、いろんなモナドをJavaとかPythonとかのコードで
>表してくれ・・・
JavaかPythonのスレ逝くべきだと思うの
>なんとなく言いたいことは分かったとしても、はっきりとモナドが
>なんなのかが分からない。
>クラスとは何が違うのか。
「なんとなく」もわかってないと思うよ
あと「モナドは自己関手の圏におけるモノイド対象以上でも以下でもない」が本質的な回答
871デフォルトの名無しさん
2017/08/14(月) 17:29:31.74ID:yxoqAlkZ872デフォルトの名無しさん
2017/08/14(月) 17:52:42.99ID:emaMcYYJ CSにコンプレックスでもあんの?
テクニカルな概念をバカにわかるように説明しようとしてもムダってだけ
テクニカルな概念をバカにわかるように説明しようとしてもムダってだけ
873デフォルトの名無しさん
2017/08/14(月) 18:03:28.37ID:HwAT4qGf 春先Haskell熱心にやってたが
いまはCとかアセンブラとかそんなんばっかw
いまはCとかアセンブラとかそんなんばっかw
874デフォルトの名無しさん
2017/08/14(月) 18:05:00.48ID:HwAT4qGf 圏論分からんのがここで
いくら吠えても無駄だとという…
いくら吠えても無駄だとという…
875デフォルトの名無しさん
2017/08/14(月) 20:12:02.36ID:IonSoW2j 「左辺 <- 右辺」の右辺をモナドという
左辺と右辺が等しいとは言っていないので制約が少なくて便利
左辺と右辺が等しいとは言っていないので制約が少なくて便利
876デフォルトの名無しさん
2017/08/14(月) 20:17:22.67ID:lpoYOEZY 圏論を学ぶ為の知識がない
877デフォルトの名無しさん
2017/08/14(月) 20:37:31.10ID:IonSoW2j letとwhereが炎上したのも
等しいと書いてあるのに時間とメモリの消費が違うのはおかしいって話だよな
等しいと書いてあるのに時間とメモリの消費が違うのはおかしいって話だよな
878デフォルトの名無しさん
2017/08/14(月) 20:53:52.30ID:FlMJ7oBL 圏論もモノイドもわからなくてもHaskellでコード書くくらいは出来るけどな
もっと初学者への門戸を広げないと未来がない気がする
もっと初学者への門戸を広げないと未来がない気がする
879デフォルトの名無しさん
2017/08/14(月) 22:55:23.88ID:CgEdc2Wx >>867
最適化オプションで差がほぼ無くなるんだから、
俺は、どっちの書き方でも良い ==> 読みやすい方で書けばOK となって嬉しいけどな。
GUI ライブラリの主流は知らんけど、ポテンシャル高いのは Web アプリ系だと思ってる。
Webブラウザを GUI のキャンバスにするタイプのライブラリ。
基本的にはどのプラットフォームでも同じように動く。
既存の Web アプリ用テストフレームワークが使える。
この辺り、ライブラリ開発者にもアプリ開発者にも大きなメリットで、
要するに開発がしやすい。
これからどんどん進化していく可能性が高いんじゃないかな。
そんなライブラリはいくつかあるけど、俺は threepenny-gui がおすすめ。
ヘンに小難しい EDSL が無く、概念が素直でシンプルだからプログラムしやすいよ。
stackage にも入ってるから導入が楽だしね。
最適化オプションで差がほぼ無くなるんだから、
俺は、どっちの書き方でも良い ==> 読みやすい方で書けばOK となって嬉しいけどな。
GUI ライブラリの主流は知らんけど、ポテンシャル高いのは Web アプリ系だと思ってる。
Webブラウザを GUI のキャンバスにするタイプのライブラリ。
基本的にはどのプラットフォームでも同じように動く。
既存の Web アプリ用テストフレームワークが使える。
この辺り、ライブラリ開発者にもアプリ開発者にも大きなメリットで、
要するに開発がしやすい。
これからどんどん進化していく可能性が高いんじゃないかな。
そんなライブラリはいくつかあるけど、俺は threepenny-gui がおすすめ。
ヘンに小難しい EDSL が無く、概念が素直でシンプルだからプログラムしやすいよ。
stackage にも入ってるから導入が楽だしね。
880デフォルトの名無しさん
2017/08/14(月) 23:10:56.01ID:/MmIRMIQ881デフォルトの名無しさん
2017/08/15(火) 02:45:23.70ID:NWVlMToc >>842
2014年とかめっちゃ情報古いのでアテにならんだろ
Revision history of "Let vs. Where" - HaskellWiki
https://wiki.haskell.org/index.php?title=Let_vs._Where&action=history
2014年とかめっちゃ情報古いのでアテにならんだろ
Revision history of "Let vs. Where" - HaskellWiki
https://wiki.haskell.org/index.php?title=Let_vs._Where&action=history
882デフォルトの名無しさん
2017/08/15(火) 16:18:56.38ID:5CT1InAk Chris Okasakiの純粋関数型データ構造
Haskellを志すキッズはマストバイだわ
まだ3章だけど、木の値の更新でどうやって効率良く(更新しない部分を)扱ってるのか解ったわ
根元から辿って、毎回関係ない方を共有してけば確かに辿るステップ分のコピーしか発生しないわけだわ
対数オーダーになるわけだわ
なるほどなるほど
SML記法で書いてあるけどHaskell式としてもすぐに頭に入るわ
Haskellを志すキッズはマストバイだわ
まだ3章だけど、木の値の更新でどうやって効率良く(更新しない部分を)扱ってるのか解ったわ
根元から辿って、毎回関係ない方を共有してけば確かに辿るステップ分のコピーしか発生しないわけだわ
対数オーダーになるわけだわ
なるほどなるほど
SML記法で書いてあるけどHaskell式としてもすぐに頭に入るわ
883デフォルトの名無しさん
2017/08/15(火) 17:50:51.72ID:ukf6/i16 ステマステマス
884デフォルトの名無しさん
2017/08/16(水) 10:19:38.26ID:WjjZTNlo smlnj入れたけど全然勉強進んでないなそういえば
885デフォルトの名無しさん
2017/08/16(水) 15:19:53.05ID:CVOJ5+kj ニュージャージーSMLは大学時代情報科学実験だか演習だかの簡易コンパイラ作製でひどい目にあった
Haskellに出逢えなかったら危うく関数型アレルギーになるところだった
Haskellに出逢えなかったら危うく関数型アレルギーになるところだった
886デフォルトの名無しさん
2017/08/16(水) 17:48:37.53ID:i974/+KY stackで、stack buildしても上書きされなかったりします?
stack execしても、新しいのにならない、、
stack execしても、新しいのにならない、、
887デフォルトの名無しさん
2017/08/16(水) 20:37:22.91ID:DL/Olpzx >>885
どんなとこが合わなかったの?
どんなとこが合わなかったの?
888デフォルトの名無しさん
2017/08/16(水) 23:08:21.23ID:CVOJ5+kj ・怒涛の再帰再帰再帰再帰の思考枠組みに悲鳴を上げる、手続き脳だった当時のボクの頭が
・末尾再帰最適化など実際(パフォーマンス)的なことを教えてくれず、代入なし、変更はコピーでやるとふわふわっと説明され、
(時間・空間)計算量的に現実には使い物にならないんじゃないかという疑念を払拭してくれなかった当時の講師(ボクはC++のように本格的でないものにはやる気が出ない性格)が
・演習に遅刻した奴への嫌がらせかと疑わしい程に沢山埋め込んであるレジュメの誤植を、口頭でちょろちょろっと訂正するだけのおざなり風土(レジュメだけでなくちゃんと教科書で進めろ)が
・できあがる、四則演算しかできない(途中アセンブリ言語に少し触れたのは良かったが)面白くもなんともない(ボクは本格的でないものにはやる気が出ない性格)糞仕様の言語(とそれ用コンパイラ)が
…ん? なんかほとんどニュージャージーのせいじゃないな
・末尾再帰最適化など実際(パフォーマンス)的なことを教えてくれず、代入なし、変更はコピーでやるとふわふわっと説明され、
(時間・空間)計算量的に現実には使い物にならないんじゃないかという疑念を払拭してくれなかった当時の講師(ボクはC++のように本格的でないものにはやる気が出ない性格)が
・演習に遅刻した奴への嫌がらせかと疑わしい程に沢山埋め込んであるレジュメの誤植を、口頭でちょろちょろっと訂正するだけのおざなり風土(レジュメだけでなくちゃんと教科書で進めろ)が
・できあがる、四則演算しかできない(途中アセンブリ言語に少し触れたのは良かったが)面白くもなんともない(ボクは本格的でないものにはやる気が出ない性格)糞仕様の言語(とそれ用コンパイラ)が
…ん? なんかほとんどニュージャージーのせいじゃないな
889デフォルトの名無しさん
2017/08/16(水) 23:58:51.50ID:t3qJKwuj そういうの、よそのスレでやってくれないか
890デフォルトの名無しさん
2017/08/17(木) 07:36:41.55ID:+LfjPFPQ すいません許してください。何でもしますから
891デフォルトの名無しさん
2017/08/18(金) 00:54:02.54ID:/Ug8Ilbd モナドってインタフェースみたいなもんでいいのか?
つまりなんでもアリにしちゃうと、設計上様々な不整合があるから
「こういうモナド」を最初に規定してしまい、「モナドに合致しない」記述は
コンパイルで弾いてくれるの?
つまりなんでもアリにしちゃうと、設計上様々な不整合があるから
「こういうモナド」を最初に規定してしまい、「モナドに合致しない」記述は
コンパイルで弾いてくれるの?
892デフォルトの名無しさん
2017/08/18(金) 01:40:52.19ID:DcI2Tm3Y モナドはDSLプラットフォーム
893デフォルトの名無しさん
2017/08/18(金) 08:52:35.38ID:JMfuFDdS 文脈だって言ってんダロ
文脈を保ちながら普通の値と同じように扱うための規則を定めたものがモナド
文脈を保ちながら普通の値と同じように扱うための規則を定めたものがモナド
894デフォルトの名無しさん
2017/08/18(金) 09:06:56.52ID:t41bY7Zb haskellはモナドじゃないものもコンパイル通しちゃうよ
モナドであることの保証は自分でするしか
モナドであることの保証は自分でするしか
895デフォルトの名無しさん
2017/08/18(金) 09:22:11.27ID:xzRfloCT >>891
モナドってより型クラスがインターフェースに近い。
んで、モナドは型クラスの一つでしかない。
等値を司るEq型クラスのインスタンスになれば=が使える。
大小比較を司るOrd型クラスのインスタンスになれば<や<=が使える。
それと同じ。
逐次処理を司るMonad型クラスのインスタンスになれば>>=とreturnが使える。
IOモナドはIO型を受け取るモナドってだけ。
素のモナドを使うのがほぼIO型しかないからIOモナドって一緒くたにされるけど、IOとモナドは分けて考える。
リストやMaybeもモナドのインスタンスなので、モナドでもある。
モナドが他の型クラスと違うのは、メソッド定義(インターフェースになる関数や演算子をインスタンスになる型で定義)の時にモナド則に則って書く必要があるということ。
それとモナド則を正しく定義できたかは型クラスには無関係なので、定義した人が正しさを保証する必要があるということ。
モナドってより型クラスがインターフェースに近い。
んで、モナドは型クラスの一つでしかない。
等値を司るEq型クラスのインスタンスになれば=が使える。
大小比較を司るOrd型クラスのインスタンスになれば<や<=が使える。
それと同じ。
逐次処理を司るMonad型クラスのインスタンスになれば>>=とreturnが使える。
IOモナドはIO型を受け取るモナドってだけ。
素のモナドを使うのがほぼIO型しかないからIOモナドって一緒くたにされるけど、IOとモナドは分けて考える。
リストやMaybeもモナドのインスタンスなので、モナドでもある。
モナドが他の型クラスと違うのは、メソッド定義(インターフェースになる関数や演算子をインスタンスになる型で定義)の時にモナド則に則って書く必要があるということ。
それとモナド則を正しく定義できたかは型クラスには無関係なので、定義した人が正しさを保証する必要があるということ。
896デフォルトの名無しさん
2017/08/18(金) 09:38:38.34ID:pIYVRSo1 万能で汎用のDSLも作れるけどそれは手続き型言語と同じだから作らないんだよ
IOはごく一部で使われるDSLであるべき
他のところではIOとは別のDSLを使うべきという設計
IOはごく一部で使われるDSLであるべき
他のところではIOとは別のDSLを使うべきという設計
897デフォルトの名無しさん
2017/08/18(金) 13:45:01.90ID:/WLuQhbG Haskellによる手続き型言語の
分かりやすくて面白い実装きぼん
(学習用のおもちゃでよろし)
分かりやすくて面白い実装きぼん
(学習用のおもちゃでよろし)
898デフォルトの名無しさん
2017/08/18(金) 20:36:40.41ID:2JfViLUf899デフォルトの名無しさん
2017/08/18(金) 21:42:29.70ID:XJnMHx6C ListTの使い方ようわかりまへん
do
x <- [1..9]
なんちゃらかんちゃら x
って、リスト感覚で使いたいんですが
do
x <- [1..9]
なんちゃらかんちゃら x
って、リスト感覚で使いたいんですが
900デフォルトの名無しさん
2017/08/19(土) 23:56:10.44ID:3LWi1RRc 直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は70万払ってる) 客:短期延長していい?
5次受けの50万(客は110万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ
長時間労働 高稼働 高スキル要求が多い
零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと
これならJIETから3次でいったほうがいいな
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
3次受けの50万(客は70万払ってる) 客:短期延長していい?
5次受けの50万(客は110万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ
長時間労働 高稼働 高スキル要求が多い
零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと
これならJIETから3次でいったほうがいいな
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
901デフォルトの名無しさん
2017/08/20(日) 03:21:02.15ID:ZIcYkpAE902デフォルトの名無しさん
2017/08/21(月) 00:38:33.62ID:JGSk0hSy >>901
ListTには失望しました。もう積むのやめます
ListTには失望しました。もう積むのやめます
903デフォルトの名無しさん
2017/08/21(月) 01:01:09.86ID:JGSk0hSy そもそもやろうとしてることに(よくよく考えたら)モナド変換必要なかった
本当に必要だったのは foldl でした
一方ロシアは鉛筆を使った
本当に必要だったのは foldl でした
一方ロシアは鉛筆を使った
904デフォルトの名無しさん
2017/08/24(木) 13:28:03.79ID:CtBOeO2p 以下のhogeを定義してください
foldl' f a xs = foldr1 seq $ hoge $ scanl f a xs
hoge xs = ???
foldl' f a xs = foldr1 seq $ hoge $ scanl f a xs
hoge xs = ???
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★6 [樽悶★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★7 [樽悶★]
- 小野田紀美 経済安保相「悪いことをする外国人、日本にいない状況つくる」 [Hitzeschleier★]
- 【速報】公然わいせつの疑いで逮捕・送検・略式起訴のAぇ! group 草間リチャード敬太メンバー 脱退を発表 「心の病の療養」に専念 [Ailuropoda melanoleuca★]
- 中国国際航空が日本便を減便へ、春節休みも SNSでは投稿相次ぐ [七波羅探題★]
- 【🐼🇨🇳】「高市総理VS中国」で日本からパンダはゼロに? 上野動物園「パンダ返還期限」まであと4カ月…★2 [BFU★]
- 【実況】博衣こよりのえちえち声遊楽プロジェクト 共同研究第三弾🧪
- 【悲報】立憲岡田「間違った答弁をした高市総理に問題がある」→愛国者ブチギレ炎上 [834922174]
- 珍🏡珍
- 【速報】アメリカ「高市総理を支持する。中国の威圧は許せない」 [931948549]
- 小野田紀美大臣「悪いことをする外国人は日本にいない状況をつくる」 [856698234]
- 【超絶悲報】60ドル=約1万円、ありがとう高市総理大臣 [469534301]
