Haskell Day 2019に参加しました
Haskell Day 2019|IT勉強会ならTECH PLAY[テックプレイ]
去年: Haskell Day 2018に参加しました - ncaq
例によって発表はせず聞き専です.
去年と比べてあまりメモしなくなって自分の軽い感想と自分の質問だけメモしていました. あまり読む価値はないかもしれません.
10時12分に着席.
「詰めて座って下さい」とのことだったので一番右端に座ったけど, そこまで人詰まらなかったので少し中央に寄り直したら, 右のプロジェクタの真正面に位置したのでとてもちょうど良かった.
スポンサーのチラシ取るの忘れてたと言うか存在していたことに気が付来ませんでした. 休憩時間に取りに行きましょう.
画面に写っているPCがタイル型ウィンドウマネージャを使っていることにギーグ感を覚える. xmonadかな? 違う気もするけどカスタマイズ次第でめっちゃ変わるから同定は難しい. というかGNU/Linuxであること自体が珍しい.
関数型(function type)を見つめるプログラミング
関数コンストラクタがコンストラクタのように振る舞うの忘れがちというか使いこなすの難しいと感じます.
HaskellではないですがReact Hooksの普及で関数を返す関数を書く人めっちゃ増えそうかなと思ってます.
ScalaとかJavaとか触ってると自動カリー化めっちゃありがたく感じます. Scala 3も自動カリー化すれば良かったのに.(多分ムチャ)
拡張適用演算子, 聞いたことのない単語だと思ったら造語だった.
関数のリストを作るのPromise的な文脈でめっちゃ需要あるんですよね.
実際の$の定義はGHCのPreludeだと
f $ x = f x
になってますね. 確かにidの方が美しそうに思えるけどなんでこうなってるんでしょうね.
資料が何処にあるのか分からなかったのでとりあえず質問しました.
資料は先にアップロードしておいた方が親切な気もしますね. 今回みたいに移して発表するのもスムーズになりますし.
HKD(Higher Kinded Datatype)
とりあえずMaybeになってしまう問題Yesodでの開発とかでとてもわかる. フィールド追加する時にマイグレーションするのは大変だからなあ.
Maybeの種じゃなくてMaybe自体を型変数にしてしまうのは完全に盲点だった. これビルダー型簡単に作れるじゃん. 神か?
Const Text
突っ込んで全部文字列にするの面白すぎる.
実際パースする時とかに実用性もありそう.
やっぱりHKDはRustにも欲しいよねと実感.
「各フィールドがFromJSON
ならば」みたいな制約他の言語だとなかなか難しいよね.
私も標準レコードにラベル自動定義するやつ作ろうとしたけど一日やって挫折した後放置してるな…
この発表関数型プログラミングというより型関数プログラミングって感じですね. テーマに沿っていますね.
新規定義がnewtypeだと思い込んで質問してしまった… どうやってフィールド名被るの回避してるのかは分からずじまい. 後でスライド見返しましょう.
何が聞きたかったかと言うとMItem
をHKDのnewtype
とかで定義したらフィールド重複しない?
ということです.
MItem
をnewtype
とかで定義せずにItem Maybeのまま使えば別にフィールド名の衝突回避出来ましたね.
自己解決.
「しんさんきぼう」GHCのderivingテクノロジー
DeriveGenericならよく使ってますね.
「めっちゃ便利なので超便利です」←小泉進次郎構文だ.
DerivingViaにはMonoidの演算子問題を解決しそうなポテンシャルを感じるけど気の所為な気もする.
— 日比野 啓 (Kei Hibino) (@khibino) November 9, 2019
<br />newtype Pair = Pair (Int, Int)<br /> deriving Monoid<br /> via (Sum Int, Product Int)<br />
Haskell Workshop 2018 で紹介された例。#HaskellDay
そうそうこういう感じです.
DerivingStrategiesのviaだけ後置になってるの統一感がないな. 全部後置設定にすれば良かったのに. 省略しても違和感ないし.
HaskellメタプログラミングによるEgisonのパターンマッチの実装
Template Haskell何でも出来る定期.
無限のパターンマッチをうまい所幅優先探索するやつ私が ncaq/prohell: Prolog like programming language でやろうとして時間足りなくて実装できなかったやつだ.
SATソルバをパターンマッチで書けるのは胸熱. うまい所最適化して専用ソフト並みに早く出来たら良いな.
英語凄い(偏差値が5になった).
英語は読めないけど証明図なら… この速度では読めないな…
特に解説のないGADTが初心者を襲う!(初心者居るのかな?)
こういう感じの分け方項書換え系の言語の処理系作る時にやりますよね. ここまで本格的なものはやったことないですが.
私は講義の内職で sub-maude/Application.hs at master · ncaq/sub-maude を作るぐらいでした.
関数と型で理解する自動微分
微分をプログラムにさせるのMaximaとWolframとRぐらいでしかやったことない気がするな.
えっなんでこれで自動微分できるのすげえ.(すげえbotになった)
Haskellソースコードに拡張無しで絵文字ガンガン使えるようになったら幽霊型の型パラメータに👻使えたら楽しそう.(英語圏混乱必至)
Stateモナドとかじゃなくてunsafe使ってるのは効率の問題なんだろうか? 質問しました. State使えないのは演算子のオーバーロードでやりたいからという理由納得. 完全に見逃してました.
二重数って概念自体初めて聞きました…
GHCJS による Web フロントエンド開発
GHCJS実用出来ないと諦めたけど最近だとNix使わなくてもcabal new-buildでうまいこといったりするのかな?
途中で括弧合わなくて苦しんでたのでrainbow-delimiter系をエディタに入れてると良いと思いました. EmacsだけではなくVimにもありますし.
前のマシンには rainbow-parenthesis 入れてたので、MacBook 新調したのが仇になった感ある。#haskellday
— チェシャ猫 (@y_taka_23) November 9, 2019
「GHCJSのビルド環境NixOS使うと思うんですけどチームメンバーがWindowsだとどうすれば良いですか?」 と質問しました. 「知らないOSですね…VMを使えば良いのでは」という返答.
.。oO(WSLで一応動くうごく(しろめ) #haskellday
— 見返へりももんがさっちゃん(ノ)・ω・(ヾ) (@ne_sachirou) November 9, 2019
WSL上で開発環境構築した場合エディタとの連携がつらそうですね… やはりWindowsは知らない扱いで良いのかもしれません.
Haskell で作る競技型イベントの裏側
サンドボックス環境作るのにCIツール持ってくるの合理的ですね.
Dockerでのバイナリのみ配布導入したい気もする. ディスクの使用量が減るから.
ServantはElm向けにAPI簡単に変換できるみたいだけどYesodのroutes変換するパッケージちょっと探したけど見つからないな… elm-bridgeで汎用的に型を変換できるかもしれないし試してみるか.
大規模数値計算を支える Haskell ── Pragmatic Haskell in Large-Scale Numerical Computation
みんなRIO使っててClassyPrelude使ってるの私だけみたいになってきたな.
Haskellの辞書生成ツール ncaq/dic-nico-intersection-pixiv: ニコニコ大百科とピクシブ百科事典の共通部分の辞書も高速化のためにリストからVectorに書き換えようかなあ. 並列化方法をまだ知らないけど.
型の制約ってそこに書けるようになったんだ.
多分ConstraintKinds
拡張.
GHCのsource plugin自体を考えもしなかったな. 多分書くことはないけど候補に入れておきましょう.
Special Talk: Cadenza: Building fast functional languages on the JVM
Oracleが悪魔なのは世界共通認識.
クロージャのキャプチャまでやるんだ…(私はトイ言語だと動的スコープで済ましてしまう)
キューピー方式も世界共通.
まずTruffleについてあまり知らなかったので今度調べる必要が出てきましたね. Graal/Truffleについて軽く | κeenのHappy Hacκing Blog
Haskellで3Dモデルに触れる
LibreOfficeのglTFサポートでティラノサウルスがまた走れるようになって欲しい. OpenGLのAPIつらかった思い出しかない.
HaskellでIoTやってます
PHPとかの動的型付け言語で始めて爆死すること分かってて忠告しても聞かない人が多すぎるしその尻ぬぐいするの辛すぎますね…
QuoraでHaskellへの愛を語る
Java面倒くさい分かる. Lombokをぶち込みたくなる.
一応Stackの管理には関わっています.(なお3コミットしかしてない模様) Commits · commercialhaskell/stack
Haskellで作って分かる型クラス
明らかにLTで収まる内容ではない.
Abstract Typeclasses
GHC 8への各ライブラリの移行は難航しましたね…
型クラスは確かにAPIみたいなものだしバージョンを分けるのは確かに理にかなってますね.
GHCのGC
メモリサイズ大きい旧世代にコピーGC使わないのは理にかなってそう.(素人感想)