haskell-jp / random #95

macOSのFirefoxもChromeも、GHC 9.0.1のソースファイルが「危険だ!」と言ってダウンロードさせてくれない。。
https://downloads.haskell.org/ghc/9.0.1/ghc-9.0.1-src.tar.xz
手元のWindowsのFirefoxでも同じことが起きました :cold_sweat:
ドメインが乗っ取られているかとか、判断できないなぁ。
... Replies ...
さっと中身を覗いた感じは普通なんですけどね...
ゲッター・セッターの関係においてDistributiveと対をなす構造、名付けてLogisticを発見したので、ライブラリとしてリリースしました。data V3 a = V3 a a aのようなデータ型からジェネリクスでインスタンスを導出し、let V3 f g h = settersとすると、各フィールドを更新する関数f, g, hが得られます。考察対象としても面白いですが実用性もありそうです https://hackage.haskell.org/package/data-functor-logistic
... Replies ...
https://zenn.dev/mod_poppo/articles/ghc-8-10-and-9-0 今更感がありますが書いてみました。
ありがたやありがたや
Hackage の trustee の人だと任意のパッケージのリビジョン上げれるんですね
https://hackage.haskell.org/package/Glob-0.10.2/revisions/
https://hackage.haskell.org/packages/trustees/
:tada: https://discourse.haskell.org/t/ann-haskell-language-server-1-5-0-release/3683
As we noted in the previous release we have dropped support for ghc versions 8.6.4, 8.10.2, 8.10.3, 8.10.4 in this release
結構アグレッシブにサポートを切っていく方針なんですね。
Hackage
の trustee の人だと任意のパッケージのリビジョン上げれるんですね

https://hackage.haskell.org/package/Glob-0.10.2/revisions/

https://hackage.haskell.org/packages/trustees/
私のパッケージも上げられてびっくりしましたねー
GHC 9.0.1 on macOS は、Haskellコードをコンパイルしている途中で刺さることがあります。9.0 の最新のブランチをビルドして使うと再現しないので、9.0.2 で直ると思います。僕のせいで入り込んだ、IO manager のバグも修正されるでしょう。
「刺さる」とは?フリーズするってことですか?
ありがとうございます。知らなかったー
stuck (stickの過去分詞) の訳語だと思いますが
「○○がスタックする」なら通じる人は結構いるんじゃないかと
「刺さる」は、処理が止まると言う意味です。
ネットワーク用語かな?
stick が「刺す」とか「刺さる」という意味で、その過去分詞の stuck が「止まる」「にっちもさっちも行かなくなる」という意味で使われている( The car was stuck in the snow. とか)ので、そこから派生したんだと思います。 英語での用例: https://www.quora.com/Why-does-my-external-drive-get-stuck-on-certain-files-when-Im-backing-stuff-up
... Replies ...
ハードディスクが「刺さる」という言いかたもしばしば聞きますよね。
そういえばフルスタックエンジニアをfull stuck engineerと綴ってしまって笑いものなった例がありましたね! :dagger_knife:
システム(プログラミング)側に寄る程よく聞くようになる表現て気もするけど気のせいかもしれない
Nobuyuki Tomizawa
90年頃(私が学生の頃)には使われていたように思います。「NFSが刺さった‥」みたいなところから覚えました。(助手がWIDEの人だったので)WIDEの人がいい出したのか?と思っていましたが、本当のところはわかりません :slightly_smiling_face:
「通信用語の基礎知識」だと1999年にエントリが作られてますね https://www.wdic.org/w/WDIC/%E5%88%BA%E3%81%95%E3%82%8B
まさにその用法でWIDE用語集にも載ってます 「NFSサーバがパニックして,lsコマンドが刺さった.」 http://member.wide.ad.jp/~sano/glossary.html#L11
まだリリースされてないバージョンを依存の上限に指定するの、意味あるのかなあ(と思いながらがっつり削除する PR 作った
https://github.com/Deewiant/glob/pull/44
... Replies ...
デフォルト値が入ったレコードに必須のフィールドを混ぜるテクニック。ネストした構造にも使える 
Endo Ryunosuke / minerva
@Endo Ryunosuke / minerva has joined the channel
今週のHaskell Weeklyから。Maybeやタプルなど既存のstrictじゃないデータ型をラップするだけでStrictにしてくれる魔法のような型を提供してくれるパッケージ。data familyやbidirectional pattern synonymでこれが実現できちゃうとは思わなかった :sugoi:
http://h2.jaguarpaw.co.uk/posts/make-invalid-laziness-unrepresentable/
... Replies ...
@ose20 has joined the channel
Haskellは出てこないのですが、数学、グラフィクス、ネットワーク、ということで、n月刊ラムダノートの新刊です。
https://www.lambdanote.com/collections/n/products/nmonthly-vol-3-no-2-2021
書き込みにサーバーを必要としないのが特徴であるKafkaライクなシステム、franz (see also: 過去の解説記事)を久々に更新しました。接続が切れたときに再接続したり、サーバーなしでローカルのデータを読み込んだりと新機能が盛りだくさんです https://hackage.haskell.org/package/franz-0.5
Web Authenticationという、指紋認証、USBキー、あるいはOS組み込みの認証などをWebで扱うためのインターフェイスがあり、最近はHaskellでサーバーサイド向けの実装を進めていました。まだ利用例も資料も少なく手探りの状態ですが、waiのアプリケーションなら簡単に導入できるミドルウェアも作ったので、おもちゃとしてでも使っていただけると泣いて喜びます 
monad-skeleton-0.2をリリースしました。Freeモナド、あるいはOperationalモナドと呼ばれる、命令の並びと実際の挙動を分離する――つまり、プログラムの骨と肉を分ける構造を提供するライブラリです。ナイーブな実装は>>=が遅い、CPS版は命令を一つずつ取り出せないという欠点を解決するために提案されたreflection without remorse(キューを使って命令を格納する)を実装しており、実装の簡潔さとパフォーマンスが売りです。応用例として、extensibleと組み合わせて拡張可能作用を実装したがあります 
... Replies ...
式で記述したバイナリデータをByteStringにしたり、ハンドルやソケットに書き込んだりするライブラリmasonのGHC 9.2.1対応版をリリースしました。高機能・高パフォーマンスが売りでしたが、GHC 9.2.1では一部のベンチマークの結果が悪化し、標準のビルダーと同等になってしまいました。 のせいか、はたまたByteStringのコンストラクタが変わったせいかと色々検証してみましたが原因はわからずじまいでした…… 
最近この件で気づいたんですけど、依存パッケージの上限をつけないままアップロードしていると、Hackageでドキュメントが生成されない原因になるみたいで悩ましいですね。
(例えば https://hackage.haskell.org/package/autodocodecを見るとaeson 2.0に対応できてないために失敗している)
もういっそCargoやnpmみたいに半自動で上限つけてほしい...(そうするとまた更新が面倒という問題に戻るんでしょうけど...
Haskell Advent Calendar 2021 3日目に飛び入りで新作を発表しました 
@t-shibata has joined the channel
akira ishiguro
@akira ishiguro has joined the channel
@η has joined the channel
Endo Ryunosuke / minerva
大学のサークルのアドベントカレンダーの企画で記事書きました おてやわらかに https://qiita.com/minerva1129/items/d2a6380b5e9b0d396f49
Advent Calendar の(もう過ぎた)空いている日は、ポエムで埋めてもいいんですよね?
今週のHaskell Weeklyから https://np.reddit.com/r/haskell/comments/r82ji7/christmas_of_code_haskell_for_mobile_a_3000_grant/
「HaskellをコアにしたAndroid・iOSアプリを作るテンプレート」をOSSとして作る人を募集。
aeson ver 2.0に対応しないといけないし複数のGHCバージョンに対応しないとなあって色々調べてたら
haskell-ciというCI生成ツールがあることをさっき遅まきながら知って、
GitHub Actionsにちゃんとキャッシュ含めて対応してるけどCircleCIに対応してないからCircleCI派やめようか悩み中です
それですねえ(リンク貼ったほうが良かったな)
プロジェクト巡ってたら見つけてCircleCIサポート追加するかGitHub Actionsに移行するか悩み中ですね
末端のアプリケーションならGHCのバージョンなんてその時一つで良いんですが、OSSライブラリ開発してるとなると複数テストが必要ですからねえ
https://github.com/tweag/rules_haskell の修正をしてて、ちょーど同じ問題に当たりました :innocent:
ただ、1週間ぐらい前にちょーど修正コミットが master には入ったようです :relieved:
https://gitlab.haskell.org/ghc/ghc/-/commit/fab2579e63bb317d4c266d7b949cf96ad6e5d17b
(頑張ってパッチを当ててみます。。。)
CI で cabal test を使っていると、テストに失敗したときに、どのテストが失敗したか分からなくて「使えん」と思っていたのだけど、標準出力に表示するオプションがあるんですね。知りませんでした。
https://stackoverflow.com/questions/15669867/cabal-test-does-not-print-executable-output
... Replies ...