Writerを使ってはならない
2022-05-20追記: mtl-2.3, transformers-0.5.6以降においてリークの起こらないCPS版Writerが提供されているのでそちらを用いてください: https://...
23 search resultsShowing 1~20 results
You need to log-in
2022-05-20追記: mtl-2.3, transformers-0.5.6以降においてリークの起こらないCPS版Writerが提供されているのでそちらを用いてください: https://...
GHCでは評価戦略がデフォルトで遅延評価ですが、このために引数に関数を適用しただけでは評価自体は行われずに、サンクとして扱われます(ここではinliningやstrictness-analysi...
Rewrite Rules(書き換え規則)について軽く説明します。 rewrite rulesはコードを書き換える最適化手法です。コードの書き換えに関してはユーザ自身が指定できるところがポイント...
現在ghc最新は8.6です。 Compact Regionsはghc-8.2から搭載された機能です。 Compact RegionsはGC中に走査されない、連続したメモリ領域に載ったデータを提供...
まずはモナド則を引用します: 1. (return x) >>= f ≡ f x 2. m >>= return ≡ m 3. (m >>= f)...
ghc-8.0.2, ghc-8.2.1で挙動確認しています。 Haskellでの多相性には主にparametric polymorphismとad-hoc polymorphismがありますが...
GHCのforallには一見複数の意味があるように思われます: 関数シグネチャのforall RankNTypesによるforall ExistentialQuantificationによるfo...
Overlapping Instances Avoid overlapping instances with closed type families OverlappingInstanceは非...
モナドに関する記事は世の中に沢山ありますが、モナドトランスフォーマーに関する記事はあまりないように思います。その概念が意味する所はHaskell初心者はもちろんのこと、他の言語使用者も知っておい...
Worker-Wrapper transformation(Worker-Wrapper変換)について簡単に説明したいと思います。数年前は調べてもあまり資料見つからなかったのですが、現在は幸いに...
型を表示して何か嬉しいんだろうかと思ったけど、意外と面白かったので載せておきます。 一般的な型に対してログへの出力なんてことは出来ないので型クラスを作りました。 あとは出力出来る型を増やしたかっ...
関数適用によるスタックとサンク 正格な言語でプログラミングすることを考えましょう。 関数適用の際にスタックが積まれ、深くなっていきます。この際のスタックはもっとも深い時にどの程度になるでしょうか...
今回からスペースリークに関することに踏み入ります。 まずは正格評価と遅延評価の動作についてです。 型と動的な挙動 まず型についてはここでは触れません。Haskellの型は非常に複雑なものです。型...
スペースリークの傾向とその対策を見ていきます。 ここでは3つのパターンを取り上げます。他のパターンがまだ見つかりそうな気がしているので、気がついた方は是非記事を書いてください。 注意事項 「サン...
モナドの挙動は少しわかりにくいためもう少し詳しく扱うことにしました。 モナドと遅延評価とその周辺 モナドはMonadクラスのinstanceになっている(かつモナド則を満たす)データ型を指します...
さて基本編に続き詳細編です。 動作を確認しながら細かく見ていきます。 Debug.Trace.trace 初めにtrace関数を導入しておきます。 import Debug.Trace (tra...
そんなに正確ではないかもしれないけど、便利であろう情報を数日にわたって書いていきます。 はじめに ある概念を理解することと、使えるようになることは別のことです。 ある概念に関して定義からその性質...
自分で使うモナドをラップする TL;DR 使うモナドをラップしておくとモナドの変更に対して対応が楽ですよ、という話です。 シナリオ例 開発当初、開発者がこのプロダクトで使うモナドはState S...
以下GHC7.10.1です。 GHCにはBangPatternsという拡張があります。 このBangPatternsを使うとSTGがどうなるか調べました。 これが {-# LANGUAGE Ba...
この記事は遅延評価を探る試みの一つです。遅延評価にはメリット, デメリット両方存在しており、この記事を根拠に遅延評価最高!と喧伝は出来ません。 以下、GHCは7.10.1です。 遅延評価と言えば...
23 search resultsShowing 1~20 results
Qiita is a knowledge sharing service for engineers.