タグ

haskellと考え方に関するzyzyのブックマーク (7)

  • 「Haskellのモナド完全に理解した」試験問題

    Haskellは勉強したけどモナドを当に理解したって言えるのか自信がない… \そんな人向けの試験問題を作りました!/ これから実施する試験問題を、10問中8問正解すればあなたはHaskellのモナドを完全に理解しています。私が保証します! それではさっそく〜〜 第一問 まずは緊張をほぐしましょう。 Haskellの Monad は○○○○である ○○○○に当てはまるのは以下の選択肢のうちどれでしょう? 型 関数 型クラス 型シノニム 答え

    「Haskellのモナド完全に理解した」試験問題
    zyzy
    zyzy 2021/12/19
    guardの話はモナドの理解というよりAlternativeというかMonadPlusの理解と言う気もする。
  • Re: 言語のはなし / jmuk - Message Passing

    話をふられてなんなんだけど、最近あんまりML系の言語を使ってみたりしていないんだよな。最後になにかやったのは、min-camlがwasmを吐けるようにしたことで、あれはOCamlで書いたのだったか(min-camlはセルフホストではなく、OCamlで書かれている)。公開もしていない……自分で書いた部分がかなりmessyで気が滅入る感じになってしまったので放置している。 Haskellの型クラス そういえばポッドキャストで最近、Haskellの歴史の論文を読んだのを紹介した。2カラムで50ページ以上という長大なる論文なので仕方なくかなりの部分を割愛したが、なかでも型クラスの話はほとんど触れずに飛ばしたように思う。ところがあの論文は “being lazy with class” という副題がついてるくらい、なにかと型クラスの話をする論文なのだった。論文著者の気持ちとしては、型クラスこそがHa

    Re: 言語のはなし / jmuk - Message Passing
    zyzy
    zyzy 2021/07/11
    やっぱtypescriptが強いのはエコシステム周りのおかげなんだろうなぁ
  • とほほのHaskell入門 - とほほのWWW入門

    概要 Haskellとは 関数型言語 純粋関数型言語 インストール Haskell Stack Hello world 基 予約語 コメント ブロック レイアウト 入出力 型 変数 数値 文字(Char) 文字列(String) エスケープシーケンス リスト([...]) タプル((...)) 演算子 関数 演算子定義 再帰関数 ラムダ式 パターンマッチ ガード条件 関数合成(.) 引数補足(@) 制御構文 do文 let文 if文 case文 where文 import文 ループ データ型 データ型(列挙型) データ型(タプル型) データ型(直和型) 新型定義 (newtype) 型シノニム (type) 型クラス (class) メイビー(Maybe) ファンクタ(Functor) アプリケイティブ(Applicative) モナド(Monad) モジュール (module) 高階関

    zyzy
    zyzy 2021/01/02
    最近Haskell元気ないので、これで少しでも流行ったらいいな。
  • 経験5年のHaskellユーザがScalaを仕事で半年使ってみた

    haskell-scala-java ちょっと前までScalaを書いていたので、 Haskell好きな人がScalaを書いた感想を書きます。 タイトルは経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blogの模倣です。 あくまで1ユーザの感想です。 Scalaに慣れてしまうと違和感を忘れてしまうと思ったので、当時箇条書きで雑にメモしていたものを参照して書いています。 逆にScala使いがHaskellを知るメモに役立つかもしれません。 Haskell歴 when: 2013年から知って学び始めましたが、格的に使い始めたのは2015年からで、5年ほど使っています where: どの言語を使っても良くて新しい言語を学ぶ必要がなければ基的にHaskellを使っています what: 趣味OSSプロジェクトの大半 現在一番スターもらっ

    経験5年のHaskellユーザがScalaを仕事で半年使ってみた
    zyzy
    zyzy 2020/11/18
    文字列の取り回しは本当にいいよね、JVM系列。
  • 日持ちする直列化のためのライブラリ「winery」 - モナドとわたしとコモナド

    人類は、酒と共に発展してきたと言っても過言ではない。穀物や果実などを酒に変換することにより、糖を除く栄養を保ったまま、高い保存性を持たせることができる。酒は人々の喉を潤し、時に薬として使われた。 プログラミングにおいても、終了したら消えてしまうデータを、保存性の高いバイト列に変えたい場面がよくある。そのような操作を直列化(シリアライズ)と呼び、いくつかのアプローチが存在する。 コード生成タイプ Protocol Buffers、cap'n'protoなど データの構造を記述する言語(スキーマ)から、データ構造およびシリアライザ・デシリアライザをコードごと生成する。幅広い言語で使える一方、作れる構造が限られており、定義済みの構造にも使えないので、Haskellのような言語とは相性があまりよくない。 互換性を保つ機能が充実していることが多い。 汎用フォーマットタイプ CBOR、MessageP

    日持ちする直列化のためのライブラリ「winery」 - モナドとわたしとコモナド
    zyzy
    zyzy 2018/08/06
    試す機会があったら試してみようかな
  • ContT を使ってコードを綺麗にしよう!

    はじめに Continuation (継続) について全く勉強したことが無いので Control.Monad.Cont で定義されている ContT とかいつ使うんだろうなーと思っていましたが、ついに利用機会がありました!!! 僕が考えたんじゃなくて fumieval さんに相談して、教えてもらったんですけどね。 問題のコード Yesod の Handler ではパラメータの取得するために lookupGetParam や lookupPostParam を利用すると思います。 実際にはこんな感じでパラメータを取得していくつか処理を行います。 deleteTestR :: Handler Html deleteTestR = do mParam <- lookupPostParam "key" case mParam of Nothing -> returnJson $ String "パ

    zyzy
    zyzy 2018/07/03
    lisp系以外での使いどころがイマイチ分からない継続さんだけど、なるほど……。
  • 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の時の条件に使っているか否かであって、そこに突然副作用が発生するか? って言われるとないような……。
  • 1