タグ

ブックマーク / qiita.com/as_capabl (6)

  • Conduit最速入門2019 - Qiita

    メリークリスマス。 アドベントカレンダーの枠が埋まっていないので、ちょっとお邪魔してconduitをやります。 conduitはバージョン1.3系統で大きくAPIが変わっているのですが、日語による新しい解説が見当たらないので、簡単にチュートリアルをやっていこうと思います。 Conduitは「読み込む→何かする→書き込む→繰り返し」みたいな処理をHaskellで書くためのライブラリ、またはフレームワークです。 来、純粋なシーケンス相手であれば、こういう処理は得意なはずのHaskellなのですが、読み書きが入って来ると途端に話が複雑になります。 実質的な選択肢は3つ。 普通にdo文で手続き型っぽく書く Lazy IO なんかフレームワークを使う 1は実は最善策という説がありますが、やめておきましょう。2はトイプログラムには良いのですが、実用的にはいろいろ問題がある事が分かっています。 とい

    Conduit最速入門2019 - Qiita
  • いつからHaskellの5行クイックソートが遅いと錯覚していた? - Qiita

    この記事は検証待ちです。 計測結果および「入力と出力をUnboxed Vectorにすれば、途中がリストでもUnboxed型の恩恵を得られる」を除く結論については、計測ミスの結果である事が分かっています。 再計測ができ次第、記事をアップデートします。 Haskellの入門者向け解説ではHaskellのエレガントさのデモンストレーションとして、以下のように非常にシンプルなクイックソートが紹介される事があります。 quicksort [] = [] quicksort (x:xs) = quicksort lt ++ [x] ++ quicksort gteq where lt = filter (<x) xs gteq = filter (>=x) xs しかし、このソートは「遅い」「というかクイックソートじゃない」と、批判の対象になっています。 https://togetter.com/l

    いつからHaskellの5行クイックソートが遅いと錯覚していた? - Qiita
    igrep
    igrep 2017/12/30
    なにげにData.List.sort優秀やん。
  • しりとりの圏の回答、または定理証明Haskellを少しだけ - Qiita

    この記事は、Haskell (その2) Advent Calendar 2017 の4日目の記事です。 同アドベントカレンダーの5日目の記事、しりとりの圏の実装(未完) の問題を解いてみたのと、その際に定理証明Haskellのちょうどいい例題が出て来たので、解説してみます。 なお4日目の記事が5日目の記事のアンサーになるのは時空間の歪みによるもので正常な動作です。日付順に読まれている方については、申し訳ございませんが5日目の記事に飛んでいただけるようお願い致します。 idを定義するために さしあたって、しりとりの圏を構成するSiriの定義を、親記事より拝借します。 {-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE TypeApplications #-

    しりとりの圏の回答、または定理証明Haskellを少しだけ - Qiita
    igrep
    igrep 2017/12/07
    もう解決策が出るとはすごい。
  • Pattern Synonymsで遊ぶ - Qiita

    Pattern synonymsとは pattern synonymsとはGHC7.8から導入されたGHC拡張で、読んで字のごとく、パターンマッチで使うパターンに別名を付ける事ができる機能である。 基 pattern synonymsの宣言構文には、以下の種類がある。

    Pattern Synonymsで遊ぶ - Qiita
    igrep
    igrep 2017/09/29
    "元の情報を変えてしまうようなpattern synonymsは可読性を損なう恐れがありますので、用法、用量を守って正しくお使い下さい"
  • クイックソート計測大会2 criterionの注意事項 他 - Qiita

    前回記事の続きです。 前回は「Haskellクイックソート計測大会2016」という事でcriterionによる速度計測の実例をレポートしましたが、計測結果を記事で少し修正しようと思います。 Criterionの補足:初期化処理について まずはcriterionの使い方についての補足です。 というか、前回記事で使用したソースに間違いが一つあったため、その訂正になります。 前回記事で使用したソースでは、MutableなVectorに対する計測を以下のように書いていました。 しかし、criterionのエンジンは、計測コードを複数回実行し平均を取る仕組みになっています。そのため、二回目以降はソート済みの配列に対して時間計測を行ってしまっていました。 今回の配列ソートではピボットを中央から取っているため、ソート済みの配列に対しては最大効率になります。つまり前回記事の計測スコアでは、Vector関

    クイックソート計測大会2 criterionの注意事項 他 - Qiita
    igrep
    igrep 2016/12/28
    “Vector.Algorithms” はやっ!そしてData.List.sortが想像以上に遅くてびっくり。遅延評価との相性を考えてマージソートにしたんだろうか。
  • Haskellクイックソート計測大会2016 - Qiita

    このエントリは、Haskell Performance Advent Calendar 2016 3日目の記事です。 導入 偉い人は言いました。パフォーマンスについて云々する前に、まず測れ。 という訳で記事では、クイックソートを例に取り、Haskellでのパフォーマンス計測を実施してみます。 Haskellのパフォーマンス改善をするなら、ITProの物のプログラマはHaskellを使うという連載記事がためになります。クイックソートの改良をはじめ、記事で扱われている内容のほとんどは該当連載に既に書かれているのですが、ものによってはだいぶ昔の記事だったりするので、2016年現在の状況を踏まえて、as_capablが実際にやった事を書いていこうと思います。 TL;DR Haskellコードのパフォーマンス計測にはcriterionを使おう やっぱりリストより配列が速い やっぱりC++の方が

    Haskellクイックソート計測大会2016 - Qiita
    igrep
    igrep 2016/12/03
    list/improved のdivideのところをpartitionでもっとシンプルに書いてみたら割と遅くなった。なるほどなぁ、という感じ。
  • 1