タグ

programmingに関するdaimatzのブックマーク (109)

  • Applicativeのススメ - あどけない話

    この記事の目的は、Applicative 信者による Applicative スタイルの布教です。 簡潔に結論を述べると、 foo = do a <- m1 b <- m2 return (f a b) のようなコードを書きたくなったら foo = f <$> m1 <*> m2 と書きましょうということ。 合い言葉は、「do と return をなくせ!」です。 FunctorとMonadの間 Functor を特殊化した型クラスがMonadで、Monadの方が強力です。なぜなら、メソッドが増えるからです。 Functorのメソッドはfmapです。fmapの別名を (<$>) といいます。(この記事では、(<$>) と liftM を同一視します。) そして、Monadのメソッドは、ご存知の通り (>>=) と return です。 FunctorとMonadの間にApplicative

    Applicativeのススメ - あどけない話
  • Comprehending Monads

    What's a monad? What's a monad? trait Monad[A] { def map[B](f: A => B): Monad[B] def flatMap[B](f: A => Monad[B]): Monad[B] } Note: there is no single, special Monad base trait! Provides a standard interface for composing and sequencing operations on some contained value(s) map: Applies a "regular" function to the contained value(s) flatMap: Applies a "monadic" function to the contained value(s) T

  • 関数型プログラミングは本当に難しいのか

    2012年9月初頭、東京・某所で開催された「函数プログラミングの集い 2012」というイベントに参加した。 このイベント、文字通り、「Haskell」や「Scala」「OCaml」「F#」「Erlang」といった関数型プログラミング言語に関するイベントなのだが、その午前中の講演を聞いて、筆者は少々面らった。 関数型プログラミング言語などの研究者である電気通信大学 准教授の中野圭介氏による講演だったのだが、同氏は講演が始まるや否や「これから『爆弾』を投下します」と前置きし、こう述べたのだ。 「『関数型言語』を使ってはいけない」と。 関数型プログラミングに関するイベントで、いきなり「使うな」という発言は、確かに衝撃的である。筆者だけかもしれないが、この発言の後、一瞬、会場が凍り付いたようにも見えた。一体、どういうことか。 実はこの発言、「使うな」という部分に重点があるのではなく、「関数型言語

    関数型プログラミングは本当に難しいのか
  • Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)

    2. 宣伝: 翻訳買ってください 抽象によるソフトウェア設計(Daniel Jackson 著) – 中島震 監訳 ・ 今井健男・酒井政裕・遠藤侑介・片岡欣夫 共訳 (オーム社) – 会場で買えます! Types and Programming Languages (通称 TAPL) – Benjamin C. Pierce 著 – 絶賛翻訳中! 2 3. 目次 • 背景: 近年のプログラミングの問題 • 提案: 超絶技巧プログラミング • 実践 テーマ1: self-descriptive な Ruby プログラム テーマ2: 文字を制限された Ruby プログラム • まとめ 3 4. 近年のプログラミングの問題 • 俗世の欲にまみれすぎ – 例: プログラミング言語 Ruby の宣伝文句 生産性が10倍! 10分でblogが 作れる! プログラミングが 楽しくなる! 実用性なんか無

    Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
  • All About Monads モナドのすべて

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

  • コードレビューについて - camlspotter’s blog

    このところ立て続けにコードレビューについて話をする機会があったので 私が経験した最高のレビュー体制を簡単にまとめておこうと思います。 利点 何故必要か 何が嬉しいのか コスト うまく回すためには何が必要か 細かい運営方法 はっきり言って当たり前の事しか書きません。 私も当時は当たり前のことだと思っていましたから、特に気にもしていなかったのです。 ただ見聞するところによると、これをちゃんとやっているところはとても少ないようです。 ウォールストリート系のファンドでもろくにレビューしてないとかどういうことなんでしょう。 だから時々会社が吹っ飛ぶんですね… 結局は、ああだ、こうだ各論を言っても、ちゃんとやれるのか、それ一点に尽きてしまう話なのですが… 利点 レビューを何のためにするか、それはまず第一に自分達の書いているコードに潜在するバグによる損失をできるだけ少なくすることでしょう。 型システムや

    コードレビューについて - camlspotter’s blog
  • C++コミュニティーの中心でC++をDISる

    Boost.勉強会4にて発表した内容です。http://atnd.org/events/11551Read less

    C++コミュニティーの中心でC++をDISる
    daimatz
    daimatz 2012/08/01
    Haskell の (というかモダーンな型理論的な) 立場から C++ を DIS る。すげーわかりやすかった。
  • 2006-08-26

    なんだか四月以降文章を書く気分になかなかなれなくて、 二年ほど前、このブログの開始当初の目標だった ひたすらテクニカルアーティクルを載せるページを作るというのは もうすでにかなり頓挫している風ではありますが、 リハビリのために無理に書くことを見つけてでも なにやら書いてみることにします。 ところで、先月の末から一月ほど京都に帰っていたのですが、 京都は死ぬほど暑かったですね。 盆地で暑いと言われつつも、 やはり離れてはじめて分かるというものです。 (私はあんまり広く情報収集したりしないので、 ここに書く内容はとうによく知られた問題なのかもしれないが、あしからず…) プログラムの実行において、何らかの外部的な情報 (つまりIOを介して得られる情報)を そのプログラム全体から参照したいケースというのがある。 典型的な例がプログラムのコンフィギュレーションで、 たとえば、設定ファイルから設定値を

    2006-08-26
    daimatz
    daimatz 2012/07/18
    "プログラムの実行において、何らかの外部的な情報(つまりIOを介して得られる情報)をそのプログラム全体から参照したいケースというのがある。" はい。
  • Haskell のお勉強

    Haskell は関数型プログラミング言語の”標準語”として、1990 年に 誕生 (Haskell 1.0) した比較的新しい言語です。 その後、1999 年に安定した言語定義 Haskell 98 が制定され、 徐々に知名度が高くなっています。 しかし、まとまった日語の解説がほとんど無いので、 簡単な解説記事を書いてみました。 目次 Haskell とは プログラムを動かす 関数を定義する 型 入出力 Haskell で最小二乗法 自前の data と class Monad 探索 種々のデータ構造 Module 詰碁を解く

  • ソフトウェアの基礎(beta) — ソフトウェアの基礎 1.0.2 documentation

    ソフトウェアの基礎(beta)¶ ドキュメントは実験中のものです。 安定板は http://proofcafe.org/sf/ を参照してください。 epub版: http://proofcafe.org/sf-beta/software_foundation_1.0.2.epub mobi版: http://proofcafe.org/sf-beta/software_foundation_1.0.2.mobi Contents:

  • 全プログラマーが知るべきレイテンシー数

    Latency numbers every programmer should know — Gist L1キャッシュ参照 0.5ナノ秒 分岐予測失敗 5ナノ秒 L2キャッシュ参照 7ナノ秒 Mutexのロックとアンロック 25ナノ秒 メインメモリー参照 100ナノ秒 Zippy[Snappy]による1KBの圧縮 3,000ナノ秒 1Gbpsネットワーク越しに2KBを送信 20,000ナノ秒 メモリーから連続した1MBの領域の読み出し 250,000ナノ秒 同一データセンター内におけるラウンドトリップ 500,000ナノ秒 ディスクシーク 10,000,000ナノ秒 ディスクから連続した1MBの領域の読み出し 20,000,000ナノ秒 パケットを、カリフォルニア→オランダ→カリフォルニアと送る 150,000,000ナノ秒 Jeff Dean著(http://research.googl

  • ACM/ICPC国内予選突破の手引き

    ACM/ICPCの2008年度の大会日程が公開されています。 国内予選は2008年7月4日,アジア地区予選会津大会は2008年10月25日~27日でホスト校は会津大学です。 参加登録締め切りは2008年6月20日です。 ここではACM/ICPC(ACM国際大学対抗プログラミングコンテスト: ACM International Collegiate Programming Contest)で 国内予選を突破するために必要な情報を載せています。 ACM/ICPC自体については2006年度の横浜大会のWebサイトなどを読んでください。 結局のところ,ACM/ICPCで良い成績を残すにはひたすら問題を解く練習をするしかありません。 ですが,出題される問題の多くはいくつかのカテゴリ,例えば探索問題やグラフ問題,あるいは幾何問題などに分類することができます。 つまり,「傾向と対策」が存在します。

  • C++0x 改め C++11 はじめの一歩 - Siv3D

    Article > C++0x 改め C++11 はじめの一歩 2011 / 8/ 14 2011年8月12日、これまで C++0x と呼ばれていた C++ の次期規格が C++11 (正式名称: ISO/IEC 14882:2011) と改まり、国際標準として承認されました。C++11 では 従来の C++ (2003年に策定されたC++03 ) とほぼ 100% の互換性を保ちつつ、多くの新機能や標準ライブラリが追加され、不便だった部分が改善されました。 現在のところ C++11 の新機能を「すべて」使える処理系は存在しませんが、今回の規格承認を受け対応がますます加速することは間違いありません。Visual C++ 2010 は、すでに C++11 の主要機能のうち「ラムダ式」「auto」「rvalue references」「static_assert」「nullptr」「declt

  • Elements of Modern C++ Style

    C++11 feels like a new language.” – Bjarne Stroustrup The C++11 standard offers many useful new features. This page focuses specifically and only on those features that make C++11 really feel like a new language compared to C++98, because: They change the styles and idioms you’ll use when writing C++ code, often including the way you’ll design C++ libraries. For example, you’ll see more smart poi

    Elements of Modern C++ Style
  • OpenCV2 プログラミングブック 「3章 リファレンス編」

    1 cv::Matの基処理 1.1 cv::Matを初期化する 1.3 cv::Matの様々なプロパティ 1.4 std::cout への出力 1.5 cv::Matの型(ビット深度)を変換する 1.6 cv::Matをリサイズする 1.7 cv::Matを変形する 1.8 cv::Matの要素をシャッフルする 1.9 cv::Mat_<_Tp>を使う 1.10 cv::Matxを使う 1.11 cv::Vecを使う 1.12 cv::MatとIplImageの相互変換 1.13 cv::MatとCvMatの相互変換 1.14 cv::MatとSTL vectorの相互変換 1.15 cv::Matとcv::Matxの相互変換 1.16 cv::Matとcv::SparseMatの相互変換 1.17 cv::MatとEigen::Matrixの相互変換 1.18 チャンネルの合成と分離

  • Top

    ネットワーク技術が発達した今、インターネットは最早WEBサイトを公開するだけの物では なくなりました。 ネットワークを越えてコンピュータ同士が繋がり、様々なタスクをこなす時代。 オペレーティングシステムはそれを全力でサポートする義務があります。 新たな時代には、新たなOSを作らなければいけません。 ならば、新しいOSはどうあるべきでしょうか? このプロジェクトでは、分散処理が未来のITの鍵を握ると考えています。 分散OS、それがNaiasの目指すものです。

  • C# によるプログラミング入門 / ++C++;// 未確認飛行 C

    C# によるプログラミング入門です。C# 初心者の方はもちろん、これからプログラミングを始めようという方も対象としています。

    C# によるプログラミング入門 / ++C++;// 未確認飛行 C
  • OpenCV.jp : OpenCV逆引きリファレンス — OpenCV-CookBook

    OpenCV.jp : OpenCV逆引きリファレンス¶ 基的に OpenCV (と依存ライブラリ),および標準ライブラリ以外は使用しません. OpenCVはEigenなしでも利用できますが,このサンプルの中にはEigen必須のものもあります. また,2.4.0以降に導入された書式には一部対応しておらず,古い書き方で書かれているサンプルもあります. 指摘や訂正,リクエストなどは OpenCV.jp か, @idojun (Twitter) まで. OpenCV 2.4.0 対応:

  • Welcome to opencv documentation! — OpenCV v2.3 documentation

    Help and Feedback You did not find what you were looking for? Ask a question in the user group/mailing list. If you think something is missing or wrong in the documentation, please file a bug report.

  • 言語処理100本ノック - 東北大学 乾研究室 / Inui Lab, Tohoku University

    FrontPage / 言語処理100ノック 3 秒後に NLP 100 Drill Exercises に移動します。 (移動しない場合は、上のリンクをクリックしてください。) © Inui Laboratory 2010-2018 All rights reserved. 研究室紹介/About Us 過去に在籍したメンバー Members 研究室環境 Lab Facilities ↑研究会/Research Meetings 概要 Overview 総合研究会 Research Seminar 意味研究会 SIG Semantics 談話研究会 SIG Discourse 知識獲得研究会 SIG Knowledge Acquisition Embedding研究会 SIG Embedding KIAI Knowledge-Intensive Artificial Intellige