タグ

ブックマーク / myuon-myon.hatenablog.com (6)

  • Haskellで躓いた(躓いてる)ポイントまとめ への自分なりの回答 - Just $ A sandbox

    各位はHaskell初心者を脱する前に初心者的つまづきポイントをまとめておいてくれると後続の初心者と上級者に喜ばれるのでなにとぞ— みょん (@myuon_myon) 2017年8月2日 qiita.com こんなふうに各位を焚き付けてしまったのでせっかく色々まとめていただいた記事に対して自分なりに回答をしてみようと思ったので記事をかくことにした ただしあくまでこれは 私個人的な意見でありコミュニティの総意でも唯一の正解でもない ことを重々ご承知くださいとだけ 色んな意見があっていいと思います(マサカリ回避の構え) 高階関数が分からない: 慣れかなぁ 逆に慣れたら高階関数とそうでない関数を分ける意味がわからなくなる気がする(世の中には高階関数が扱えない言語があるって聞いた) は1冊終わったけど次やることが分からん: コマンドラインで動く簡単なツールやらゲームやらスクリプトやらを書いてみる

    Haskellで躓いた(躓いてる)ポイントまとめ への自分なりの回答 - Just $ A sandbox
  • Notions of Computations and Effects - Just $ A sandbox

    前回のeffect systemに対するボヤキ、あるいは予言が色んな人に読まれたみたいなので興味がある人が一定数いるならeffect systemの紹介記事をちゃんと書こうと思った次第。 というわけでmonadを前提としてプログラミング言語的な見方と圏論的な見方を通してeffectに関するお話をしてみます。 注意 以下のプログラムはHaskellに寄せたオレオレsyntaxで実際にそういう実装があるわけじゃないので注意してください。実際の実装されている言語の話は最後に少しします。 programming with effects effectは通常type-and-effect-systemと呼ばれるようにある意味で一種の型システムのようなものです。型システムがプログラムの入力と出力の値を見積もる仕組みだったのに対し、エフェクトシステムはプログラムを実行した際に「起きうる」エフェクトをコン

    Notions of Computations and Effects - Just $ A sandbox
  • monadからeffectへ - Just $ A sandbox

    追記 もう少しまともなeffect入門記事を書きました myuon-myon.hatenablog.com この文章は今から5-10年後に万が一effect systemが流行り始め、今のHaskellのような立ち位置になった場合に備えて書いています。 effect systemについて Haskellはモナドを用いて純粋・非純粋を切り分けることができる言語で、computational effectを扱うために導入されたものだった。 かつては関数 A -> B で一緒くたにしていたcomputationは、 A -> T B と、文脈 T をもった関数として表現できるようになった。ところでこのようなcomputational effectとしてのモナドを言語機能に組み込むには2つの方法があって、 Meta Language方式 (Haskell) Programming Language

    monadからeffectへ - Just $ A sandbox
  • Theorem Prover Leanの紹介 - Just $ A sandbox

    Microsoftが開発したTheorem Prover Leanを紹介します. 特徴 他の言語と軽く比較する. あくまで個人的な感想です. Lean Coq*1 Agda Isabelle 証明の書き方 structured proof, tactic, 函数定義 tactic 函数定義 structured proof, tactic 開発環境 emacs emacs, CoqIDE emacs jEdit ドキュメント × ◎ ○ △ implicit parameter ○ ○ △ (型を使わないので不要) Equational Reasoning ○(builtinなものはOK. 独自演算子は条件付き) ?(知らない) ◎ ○(基的にbuiltinなもののみサポート) 自動証明 ×(なし?) ○(auto, omegaなど) △(emacsのautoコマンド) ◎(auto,

    Theorem Prover Leanの紹介 - Just $ A sandbox
    notae
    notae 2016/01/10
  • Lensで行こう! - Just $ A sandbox

    続編:Lensで行こう!(2):Isoへの拡張 - みょんさんの。 Lensとは Lens(http://hackage.haskell.org/package/lens-3.7.1.2)というパッケージがあります。 非常に大きなパッケージで、中には非常に便利な函数群がたくさん揃っています。 私が調べた限りでは、 "Lens package in Haskell(HaskellのLensパッケージ)" の解説記事はData.Lens(http://hackage.haskell.org/package/lenses-0.1.6)がやたらとヒットするのですが、こちらよりもControl.Lensとその周りのパッケージ群(この段落の最初にリンクが貼ってある方です)の方が色々と便利でたくさんの函数が揃っているので、ぜひConrol.Lensの方を使ってください*1。 さて、Lensって何が出来る

    Lensで行こう! - Just $ A sandbox
  • Lensで行こう!(2):Isoへの拡張 - Just $ A sandbox

    このエントリーはLensで行こう! - みょんさんの。の続編にあたります。 前回の復習 前回、Lens型について詳しく見ました。 Lens型は以下のような型のデータです。 type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t これはFuctorを上手く定めてやれば(ConstとIdentityでしたね!)getter,setterとして振る舞うことのできる素敵な型でした。 さて、この型がどれだけの力を持っているかを実感した方は、きっと「こんなややこしそうに見える型がどこから降ってきたのか?」という疑問が湧いてくると思います。 今回はこのことについて見ていくことにします。 Iso型とは? ではLensについて考えるのに、やはりHackageを参照しましょう→The lens package このページ真ん中に、大き

    Lensで行こう!(2):Isoへの拡張 - Just $ A sandbox
  • 1