タグ

2019年12月10日のブックマーク (4件)

  • サンクの構造を見る - Qiita

    GHCでは評価戦略がデフォルトで遅延評価ですが、このために引数に関数を適用しただけでは評価自体は行われずに、サンクとして扱われます(ここではinliningやstrictness-analysis等の最適化は考慮しません)。 サンクとは評価を進めるための情報は揃っているけども(遅延評価のために)評価を進めないままに扱うための構造です。GHCでのサンクの実態は引数のないクロージャです。 そしてこのサンクの中身はHaskell上から確認する手段はありません... と思っていたのですが、最近1は中身を確認することができる様ですね。 http://hackage.haskell.org/package/ghc-heap-view ghc-heap-viewはサンクを含むHeap上の構造を確認するためのライブラリです。 前提条件 ここでは以下の環境で動作確認を行っています。 MacOS ghc-8.

    サンクの構造を見る - Qiita
  • なぜHaskellでタライ回しが速いのか、あるいは遅延評価とSTG - Qiita

    この記事は遅延評価を探る試みの一つです。遅延評価にはメリット, デメリット両方存在しており、この記事を根拠に遅延評価最高!と喧伝は出来ません。 以下、GHCは7.10.1です。 遅延評価と言えばタライ回しです。 遅延評価を持つ言語でタライ回しはやたら速いと言われています。Haskellで書いてみましょう。 import System.Environment (getArgs) tarai :: Int -> Int -> Int -> Int tarai x y z | x <= y = y | otherwise = tarai (tarai (x-1) y z) (tarai (y-1) z x) (tarai (z-1) x y) {-# NOINLINE tarai #-} main :: IO () main = do args <- getArgs let (x:y:z:_)

    なぜHaskellでタライ回しが速いのか、あるいは遅延評価とSTG - Qiita
  • Haskell、Scala、ML、Scheme:あなたが次に学ぶ関数型言語 | POSTD

    (編注:2016/7/27、頂いたフィードバックを元に記事を修正いたしました。) 学生たちから、次に学ぶ言語はどれがいいのかとよく聞かれます。IT業界で働きたい人にお薦めするのは、現在盛んに使われている言語です。C++Java、C#はもちろん、PythonRubyPHPPerlなども挙げられるでしょう。 一方、向学のためという人や、学術研究や起業に関心がある人にとって、次の言語を選ぶ基準となるのは、就職に有利かではなく言語の表現力でしょう。学術研究や起業活動を行うには、プログラマとしての能力を何倍にも高める必要があります。そして、(おそらく)確立されたコードベースを扱った経験はないでしょうから、手元にあるタスクにとって最適な言語を自由に選ぶことができます。 この記事では、勉強に適したHaskell、Scala、ML、Schemeという4つの言語を、私の好きな特徴や参考資料のリストと

    Haskell、Scala、ML、Scheme:あなたが次に学ぶ関数型言語 | POSTD
  • コードを書いて金を稼ぐ - kuenishi's blog

    初めてまともに携わったシステムはNTT研究所で作られていたCBoCといわれるものであった。内容について詳しくは述べないが、国内では割と先進的でありながらとにかくNTTの事業会社(割と稼いでいる)で使えるものを作ろうというものであった。この時期は研究所は研究だけしていればよいというものではなく事業貢献が求められており、論文になるような研究を生み出すだけでなくそれをどうやってビジネスにするかが重要視されていたのだと思う。このとき作ったものは実際に事業会社で使われ、退職の前後には年間数万円が口座に振り込まれるようになっていた。なお収入なので税金の扱いを間違えないように。しかし特許といえばガッポガポ…というイメージだがそんなに当たることはない。わたしが携わったそのソフトウェアは確かに使われていたが、事業会社のビジネスの中核を支えていくようなものにはならなかった。ならなかったのでメンテナンスフェーズ

    コードを書いて金を稼ぐ - kuenishi's blog