haskell-jp / mokumoku-online #8

ぼ、僕もPureScriptやってるので…((()))
そ、それはサーバーがHaskellなんでセーフで! :sweat: :male-judge:
作るもの思いついた。
自作Haskellアプリの放置度を可視化するツールを Haskell で作ります!
(今漁ろうとしてめんどいなってなった)
定期的に依存 Stackage LTS アゲアゲをするんですけど、自作ツールが多すぎて。。
まずツールの名前を考えるのに数時間溶けます(あるある?
qualified do の提案読んでたら graded monad というのがあって、既存コードが実は graded monad なのでは?と思って Control.Effect.Effect のインスタンスにしようと思ってたら地味にできなくてボツになって
http://hackage.haskell.org/package/effect-monad-0.8.1.0/docs/Control-Effect.html
Invtype Inv m (f :: k) (g :: k) a b ならできたのに
外出中なのでエア参加で。今日はグラフ/図式描画ライブラリの Chart をいじりました。
めちゃめちゃ高機能で複雑なAPIになってますが、 Easy なInterfaceも用意されててそちらからだとかなりサクッと使えます
それぞれのexampleにEasy helperを使ったバージョンとstateful interfaceを使ったバージョンが併記されてます https://github.com/timbod7/haskell-chart/wiki
@lotz @nakaji-dayo 運営ガイド作りました。ご査収ください。
次回以降、イベントページの作成と告知は前の会の担当者が行うことにします。
なので @lotz さんは次回の分もやることになってしまいますがあしからず :pray:
https://wiki.haskell.jp/Workshop/hasmoku/OrganizerGuide
FFIでちょっとずつJSからPSに移行していきます
https://book.purescript.org/chapter10.html
ここまでできた
$ stack exec -- deps-sensor
matsubara0507/deps-sensor: lts-15.13
matsubara0507/git-plantation: lts-15.5
haskell-jp/antenna: lts-14.20
** そろそろ時間です!
今日やったことを軽くご共有いただけると幸いです hask(_ _)eller
https://haskell-jp.slack.com/archives/CUPBC8WCE/p1590217836166200 のとおり運営ガイドを作りました。
運営に協力していただける方は随時募集中です。
一月か二月に1回どこかの土日に参加できるなら十分でしょう。
あ、あと、まつばらくんから報告いただいた https://github.com/haskell-jp/slack-log/issues/42 の解決に向けてslack-webパッケージのソースやSlackのAPIのドキュメントを読んでました
ごにょごにょして、発散、Deadlock、Live lock、意図しない処理順入れ替わり、と色々発生しましたが、何とか順次実行モデルと並行モデルの作成が一部完了しました。TINA便利です。
http://projects.laas.fr/tina//
bifunctor を導入するために元のデータ型を多相にして,クラス宣言をMultiParamTypeClasses にしてなど順番にしていました.
取り敢えずbifunctorには出来たけれど失ったものも多そうです.
biforldableがあると無理やり作っていた偽mapをいい感じにできそうなので次はそれをやろうと思っています.

https://github.com/yakagika/ExchangeAlgebra/commit/2348298b9d00cd83bc36b1c4f776603c673130ea
elm-license-checker に、purescript-optparse を使ってコマンドラインオプションを扱う機能が増えました
興味本位なんですけど、なんでPureScript製なんすか?
開発環境の構築と調査で終わってしまいました。
・Hyper-vにFreeBSDをインストール
・FreeBSDにHaskell開発環境等をインストール
・上記の各種設定(初期設定)
・ipfwのソースコード確認

私的に運用しているサーバの管理を楽にしようと、急遽思い立ったのですが、いろいろと忘れてて事前準備に時間がかかってしまいました
TODO: 帰ったら積分をシンプソンの公式使ったものに書き換える
指定した Haskell Stack プロジェクトリポジトリの resolver を一覧表示してくれるツールを作成しました
https://github.com/matsubara0507/deps-sensor
$ stack exec -- deps-sensor
matsubara0507/deps-sensor: lts-15.13
matsubara0507/git-plantation: lts-15.5
haskell-jp/antenna: lts-14.20
追々、Webページの生成と http://packdeps.haskellers.com っぽい機能を足したりするつもりです。
まず、Elm プロジェクトの依存ライブラリーのライセンス一覧を取得するツールです。
• Elm プロジェクトはほぼ NPM プロジェクトでもあるので NPM パッケージとして提供すると親和性がいい
• Elm で作らなかった理由としては Elm で CLI ツールを作れると知らなかったから
オプションの実装等できていない箇所は多々あるのですが、基本的な動作までは動くことができました
https://github.com/kwhrstr/httplabkell
今日は勉強したりダラダラ本読んでたら終わってしまいました・・・継続モナドをどう使うのかがいまいちあまりわかってません。
haxl試してましたが、途中脱線してたりして進捗悪かったです
もうちょっとコード書いた後ブログ書いたりしたい
継続モナドの応用例、たなこふさんの記事とか参考になるかもです :eyes:
https://qiita.com/tanakh/items/81fc1a0d9ae0af3865cb
継続モナドの詳しい説明があるわけじゃないですけど、応用例の紹介記事です
https://haskell.e-bigmoon.com/posts/2018/06-26-cont-param.html
ありがとうございます!
実は @lotz さんが紹介してくれている記事を読んだのがきっかけで、継続モナド使ってみようってなりました。
で、リソース管理するのに使う以外に何か使い道ないのかなー、と思って探していて @matsubara0507 さんが紹介してくれている記事を見つけたのですが、正直なんでこんなふうにかけるのかが全然ピンとこず・・・
そこから継続モナドってどんな動きをしてるのかなー、とか、モナド変換子でスタックするときにどんな順番でやればいいのかなー、とか見てた感じです。
時間中に見てたのは、以下のような記事でした。
http://enakai00.hatenablog.com/entry/20121010/1349835303
@igrep さんの記事はまだ見たことなかったです。読んでみます。ありがとうございます!
@nakaji-dayo @lotz ちょっとPCが不安定になってたせいで遅くなりましたが、Googleカレンダーに予定を追加する手順を書きました。中嶋さんにもGoogleカレンダーへの追加権限を加えてます。
https://wiki.haskell.jp/Workshop/hasmoku/OrganizerGuide
https://github.com/haskell-jp/haskell-jp-wiki/commit/f444c0ee42f09d2a05c3522694cfa72b06db78cf
継続モナドの挙動、難解なの分かります :sweat_smile:
私も昔、簡単なプログラムでですがContTの挙動を解説した記事を書いたことがあるので何かの参考になれば :pray:
https://qiita.com/lotz/items/a1ff5725e918e216940e
あまり原理を厳格に理解しようとせず、そういう風に動くんだな、とぼんやり把握しておくぐらいで良いかと思います(私もそんなもん
ありがとうございますー!
で、リソース管理するのに使う以外に何か使い道ないのかなー、と思って探していて
他にも、kakkun さんの手続きHaskellで紹介されている break 可能な for 文とかも ContT の応用例ですね
https://github.com/kakkun61/procedural-haskell-sample-code/blob/ffb92c73b5f43a7bd040826f19ae85ae6f275f16/control/Main01.hs
lotz さんの記事の話と同じだった
break付きfor
たしか関数に切り出してる粒度が微妙に違うので僕の記事を読んでからkakkunさんの実装を読むと理解が深まるかも?
シンプソンの公式を適用して、積分区間の幅を8倍にした https://gist.github.com/naohaq/50374bacd44f080856a215c5cfc86e82
http://hackage.haskell.org/package/numeric-tools の Numeric.Tools.Integration を使うのがいいような気がしてきた
継続モナドもう忘れた……
@aiya000 has joined the channel
Numeric.Tools.IntegrationquadSimpson 使うようにしたら 10秒かかっていた処理が1秒未満にw
@ has joined the channel
とりあえずこんな感じのグラフが描けました