タグ

haskellに関するzyzyのブックマーク (32)

  • Haskell副作用ポエム - Qiita

    この記事は,「whywaita advent calendar 2017」の22日目の記事です. 真面目な記事を一書いてしまったので,バランスを取るため(?)不真面目な記事をぶっこんでおこうというのが,この記事の主たる動機です.特に読む価値はありません.メリークリスマス(まだ早いか). あと@whywaitaは最後の行だけ目を通してください. 概要 Haskellを触り始め,最初に目につくのがIOというヘンテコな2文字だ.多くの近代人は,まずはGoogle検索を訪問するだろう.そして,うんざりして画面を閉じる.そこに書いてあることはこうだ. Haskellは純粋関数型で,副作用をIOで閉じ込めることができる. といったことや Haskellは純粋だけど,理論背景は難しいから副作用を扱えると考えて良いよ. と言ったことだ.ふむ,なるほどよく分からない.さらには, Haskellは,純粋な式

    Haskell副作用ポエム - Qiita
    zyzy
    zyzy 2018/01/23
    これは初学の時に読みたかった奴。
  • 圏とHaskellの型

    Proof Summit 2015 <http: /> で発表した、SAT/SMTソルバの仕組みです。 Proofということで、論理学的側面からの面白さを出来るだけ紹介しています。

    圏とHaskellの型
    zyzy
    zyzy 2016/07/24
    ピンときにくい自然変換がものすごくわかりやすくなった感。実例って大事。
  • すごい Frege たのしく学ぼう!

    歌舞伎座.tech #9 で使用したスライドです。JVM 版 Haskell であるプログラミング言語 Frege について、モナドを利用した Java ライブラリの呼び出し方に焦点を当てて紹介しています。なお、このプレゼンで触れ「なかった」話題についてはブログ記事 http://ccvanishing.hateblo.jp/entry/2016/03/22/020302 を参照のこと。Read less

    すごい Frege たのしく学ぼう!
    zyzy
    zyzy 2016/03/22
    ドットでメソッド呼び出しならコンポジションどうするんだ? と思ってぐぐったが、両方使えるようになってるのか。
  • これから Haskell を書くにあたって - Speaker Deck

    2016/2/14 開催の第一回 hs.hs 勉強会で用いたスライドです。 流れは以下の通りです。 1. はじめに 自己紹介や発表の目的について 2. GHC 7.8 からの変更点 GHC 7.8 の前後で起きたライブラリの変化と、その変化への対処法について 3. Haskell が遅いと言われるワケとか 遅延評価や各種データ構造の内部表現に起因する諸問題と、その対処法について 4. 知らないと損する言語拡張たち 型の表現力を高めたり、計算速度を向上させる種々の言語拡張について 5. FFI の話 Haskell での FFI の扱いと、身近なライブラリから見る実装例について(※一部抜粋) 6. おまけ(その他便利グッズの話) あるとコーディングがある程度便利になる言語拡張について 一部訂正あり: http://qiita.com/func-hs/items/51b314a2323b83

    これから Haskell を書くにあたって - Speaker Deck
    zyzy
    zyzy 2016/02/21
    複数の型変数が使えるようになったときの使い道が今の所想像つかないんだけども、便利そうではある。
  • Dynamorphism 概論

    1. はじめに1.1. まえがき この記事では、関数型プログラミングにおいて動的計画法(Dynamic Programming)を行う手法の一つである dynamorphism について解説します。 しかし、dynamorphism という概念はそれ単体で説明できるものではなく、F-代数 や catamorphism, anamorphism, hylomorphism, histmorphism などの各種概念を用いないと説明できないものです。そこでこの記事では順々とそれらの概念を追っていき、最後にdynamorphismに行き着くような構成になっています。 そのため、この記事は dynamorphism の説明記事であると同時に、F-(余)代数や catamorphism, anamorphism 等に関する解説記事でもあります。 ここで留意していただきたい点が何点かあります。いわゆる

    zyzy
    zyzy 2016/01/19
    競技プログラミング系の問題やる時に、頻出するのに関数型でそれっぽく書くの面倒だと常々思ってた。
  • Haskellで書かれたおもしろいFizzBuzz ― Haskellで読めないコードに遭遇した時に解読する方法を徹底解説! - プログラムモグモグ

    Haskellには抽象的な高階関数や演算子がいくつもあり、たまにそれらを巧妙に用いたコードがでてきて感心することがあります。 他の人が書いたHaskellのコードを読んでいると、なかなか面白いものと遭遇したりします。 巧妙に書かれたコードを解読していくと、実は型クラスのinstanceをうまく組み合わせて使っていて、とてもよい教材になることがあります。 実際にアプリケーションコードを書いていてここまで技巧的なコードを書くわけではありません。しかし、こういうコードを読み解くのは型クラスのいい練習になりますし、それまで知らなかったinstanceと遭遇したりしたときは、とても勉強になるのです。 このエントリーでは、とても技巧的なFizzBuzzを紹介し、それを読み解いていく方法を紹介します。 Haskellの初心者向けに、どういうふうに関数や型を調べて言ったらいいかを丁寧に書いています。 Ha

    Haskellで書かれたおもしろいFizzBuzz ― Haskellで読めないコードに遭遇した時に解読する方法を徹底解説! - プログラムモグモグ
    zyzy
    zyzy 2015/12/28
    (->)関連の挙動って把握するの本当に脳みそ混乱する……
  • Haskellと副作用の議論の続き - あどけない話

    twitter で続いている Haskell と副作用、および参照透明性の議論ですが、twitter ではコードを示しにくいので、ブログに書きます。これに対する返答は、twitter でも構いませんし、ブログに対するコメントでもいいですし、トラックバックでも OK です。 多くの人が納得できる説明が見つかるといいですね。:-) 副作用と参照透明性 僕はもともと命令型言語のプログラマーなので、「副作用」という言葉は命令型言語のプログラマーが使う意味で使っています。 Simon Peyton Jones さんは、Beautifull Code というの中で「副作用(side effect)とは、変更可能な状態を読んだり書いたりするような何か」と書いています。そして、副作用を表す型を IO a としています。 Brent Yorgey さんは、The Typeclassopediaで「IOモナ

    Haskellと副作用の議論の続き - あどけない話
    zyzy
    zyzy 2015/11/21
    StateモナドとSTモナドの違いは、それこそランク2以上の多相をrunの時の条件に使っているか否かであって、そこに突然副作用が発生するか? って言われるとないような……。
  • Re: Haskellの勉強で詰まってる部分 - maoeのブログ

    mizchi.hatenablog.com Haskellを習得する上で難しいポイントだと思います。大きく分けると次の二つにまとめられるのではないかと思います。 コードの中で現れる識別子からそれが何なのかを探しづらい Cabalがつらい それぞれ個人的な見解を書いてみます。 コード中の識別子の探し方 モナドのところの <$> とか <*> とか、え〜どっちがApplicativeで何がFunctorだっけ、そもそもその定義はなんだったっけ。え〜あ〜〜〜みたいになる。 と名前空間の そして名前で役割を推測することが困難な事が多々ある。mapM_ とか、前述した演算子とか。いや mapM_ は map があって mapM があって、っていう段階があるのは理解しているけど、ソース読んでて突然出現するそれには全く対応できない。 はどちらも識別子から型がわかれば大部分が解決します。ありがたいことに近

    Re: Haskellの勉強で詰まってる部分 - maoeのブログ
    zyzy
    zyzy 2015/05/09
    Haskellの「型さえ分かれば内容が大体わかる」は、それ自体は素敵なんだけど、コードだけ追っていくと不便な部分も多々あるのよな。型をぱっと見れる手段が別途必要になるあたり。
  • https://qiita.com/dskszk/items/a4cf720aecc4ae4563f5

    zyzy
    zyzy 2015/01/05
    これwikiでおいかけまわして、分かったような分からんようなもやっとした気持ちになってたやつや!!
  • 関数型!侵略ノススメ☆ - 純粋関数型雑記帳

    (この記事は Functional Ikamusume Advent Calendar jp 2010 の為に書かれました) 侵略!侵略!侵略!侵略!侵略!侵略!イカ娘! 再帰しなイカ? main = putStrLn $ f 6 where f 0 = "イカ娘!" f n = "侵略!" ++ f (n-1) 古風に再帰しなイカ? main = putStrLn $ f 6 where f 0 = "イカ娘!" f (n+1) = "侵略!" ++ f n 左派じゃなイカ? main = putStrLn $ foldl (\a _ -> "侵略!"++a) "イカ娘!" [1..6] 右派じゃなイカ? main = putStrLn $ foldr (\_ a -> "侵略!"++a) "イカ娘!" [1..6] 右派に見せかけた左派じゃないか? main = putStrLn $

    関数型!侵略ノススメ☆ - 純粋関数型雑記帳
    zyzy
    zyzy 2014/02/28
    古典形式の書き方って、見たことないと思ったら、今はもう非推奨なのか。
  • Haskellの神話 - あどけない話

    Haskell の優雅さを示すためによく使われるコードは、優雅さと分かりやすさだけに特化しており、現実的には遅いことが多い。書き手は他に効率のよい実装があることを知っているのだけれど、読み手はそうではないから、後で効率が悪いと気づいて愕然とするみたいだ。 この記事では、神話になっている例を3つ取り上げ、効率のよい実装と合わせて紹介する。その 3 つの例とは、以下の通り。 フィボナッチ数 素数生成 ソート フィボナッチ数 遅延評価を活かした優雅なフィボナッチ数の実装は、以下の通り。 fib n = fibs !! n fibs = 0 : 1 : zipWith (+) fibs (tail fibs) Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅いにも書かれているように、この実装は遅い。 その理由は、(+) の計算が遅延し、その待機

    Haskellの神話 - あどけない話
    zyzy
    zyzy 2013/05/30
    haskellのエラトステネスおっせー、ってなったのでぐぐったら、そりゃそうだとなった記念。なんでこんな簡単なことに気づかなかった……
  • ScalazとHaskellの比較記事というか疑問点をいっぱい書いたら、shelarcyさんにいっぱい教えてもらったよ!

    Kenji Yoshida @xuwei_k 一度公開したあともどんどん書き足したら、結構な量になったでござる(´・ω・`) http://t.co/X7ewxjzJ っていうかHaskellとあまり比較してないし関係なくなってきている・・・ 2012-02-05 04:50:38 Kenji Yoshida @xuwei_k コメントがっ「述語を量化できる論理体系では、同一性という概念をプリミティブに持たなくても 「XとYが等しいとは、全ての述語Pに対してP(X)ならばP(Y)、が成り立つこと」 という形で定義できる」 http://t.co/vKvJT0My 難しいがちょっとだけ理解が深まったような 2012-02-05 13:42:00

    ScalazとHaskellの比較記事というか疑問点をいっぱい書いたら、shelarcyさんにいっぱい教えてもらったよ!
    zyzy
    zyzy 2013/04/24
    今後分かるようになりたいので、ブクマ。