haskell-jp / general #11

@Cassin has joined the channel
@ has joined the channel
@ has joined the channel
Haskell に興味を持って最近勉強をはじめました.
よろしくお願いします:grinning:
@olafs has joined the channel
@ has joined the channel
@calibur has joined the channel
@kyusuke has joined the channel
@ has joined the channel
@qnoyxu has joined the channel
@m-nagashio has joined the channel
@ has joined the channel
@ has joined the channel
@hanotch has joined the channel
@mi-chang has joined the channel
@KIMOTA has joined the channel
@sawada has joined the channel
はじめまして、卒業研究で突然Hasekell-Yampaのプログラムを組むことになってわからないことだらけなのでここに入らせていただきました。バカみたいな質問をたくさんするかもしれませんがよろしくお願いします
そしていきなり質問なのですが今現在stackを用いてHaskell-Yampaの先輩のプログラムを実行しようとしているのですが前の先輩がUNIX環境で行っていたこともあり引き継ぎ資料が機能していません。どこがうまくいかないかというとFRP.Yampaなどのimportの処理がよくわからないのです。そもそもstackでHaskell-Yampaを用いたゲームの作成などができるかなど教えてほしいです
プログラムはこれが置いてあるだけでした
questions というチャネルがあるので質問系はそちらで!
lts-12.18だと

package.yaml(一部)
executables:
    ...
    dependencies:
    - GLUT
    - Yampa


stack.yaml
extra-deps:
- Yampa-0.11


で動きましたー
FRP.Yampa.Vector3
が最新のYampa-0.13だと消えてるみたいで 0.11 にしないと動かなかったですね
Yampa うちの研究室でもやってたなぁw
questions というチャネルがあるので質問系はそちらで!

一応(迷ってきた人が慌てて質問しちゃってもいいように)ここでも質問可、ということにはしています。
(が、このルール紛らわしいのでやっぱり止めた方がいいのかな。。。
「質問系はこちらで!」みたいな突っ込みを避けるためにこうしてるんですが、「『質問系はこちらで!』なんて突っ込みしなくていいよ」という突っ込みを毎回しているような。。。)
あ、そうだったんですね :sweat_drops: 失礼しました
@kuono has joined the channel
@Hiro has joined the channel
@jeedo has joined the channel
@ has joined the channel
@Chris has joined the channel
@umeneri has joined the channel
@ has joined the channel
@GrimssonG has joined the channel
仕事(といっても研究ベースですが)にHaskellを使っておりますが,環境が最高すぎて車輪の再発明ばかりしております.
わからないことが多々でてきたので,参加させていただきました.よろしくお願いいたします
早速で恐縮なんですが,現在スタンドアローンのWin7環境でHaskellPlatform(GHC 8.4.3)を使って作業をしています.csvデータを取り込みたく,以下のパーサーをReal World Haskell 等見ながら作成してみました.数100mのファイルなら問題なく動くのですが,4Gくらいになるとメモリヒープを起こします.マシンのメモリは128積んであるので,読めないことはないと思うのですが,理由がわかりません.ご知見ありましたら,ご教示いただければ幸いです.
GHC で吐いたプログラムのヒープサイズはデフォルトで無制限か
https://downloads.haskell.org/~ghc/8.4.3/docs/html/users_guide/runtime_control.html#rts-flag--M%20%E2%9F%A8size%E2%9F%A9
4Gくらいになるとメモリヒープを起こします

メモリ不足でOSによってkillされるってことですか?
128gbまで使い切ってキルされるか自分で強制終了しています。色々とstrictにしてみたりはしたんですが変わらず、悩んでいます。
ヒーププロファイリングをしてみる、とかですかねぇ。
ちなみに、CSVパーサーと言えばcassavaが有名ですが、それでやるのはダメなんですかね。
プロファイリングをしてみて動くサイズのファイルでは問題なさそうなのですが、一定サイズを超えるとプロファイルはくまえに死んでしまって困っています。既存のものを入れられると助かるんですがオフラインで依存環境が解決できずに車輪の再発明をしている次第です。
なので、プロファイリングして問題のないサイズの入力でたくさんアロケートしている関数を探すのです。

... それはさておき、ざっと読んだ感じ、単純に Data.TextをData.Text.LazyにしてStrictにするのを止めるだけで大きく変わりそうな気がします。
メモリリークは結構、呼ぶ側のコードの影響もあるかもしれません。
問題のないサイズで元々Lazyなものを使って試していたんですが、Strictの方がスコアが良かったので、こちらにしていました。Lazy vesionから順にbang pattern を付けて見たんですが、最終的にこれが一番結果が良かったです。cellの部分でdeepseqも試しましたがそちらは悪化したのでやめました。
readCSVTWin path >>= mapM_ (mapM_ Text.putStrLn)) みたいに即座に消費するコードを書いてみてリークしないようなら、呼ぶ側の原因かも