functionalに関するpaz3のブックマーク (102)

  • 4Clojure - Tải Game MOD APK & Tin Tức Công Nghệ Hấp Dẫn

    v3.49.7 Menu, Unlimited Full Money, Unlocked Tanks

    4Clojure - Tải Game MOD APK & Tin Tức Công Nghệ Hấp Dẫn
    paz3
    paz3 2016/02/01
    プログラミング言語Clojureのプログラム問題がクイズ形式で出題されるサイト。Clojureのオンライン実行環境(REPL)もある。
  • On Lisp

    Paul Graham氏の著書On Lispの邦訳を無償で公開しています.Common Lispのマクロに関する貴重な情報がいっぱいです.

    paz3
    paz3 2015/06/12
    Paul GrahamのOn Lispの日本語訳。
  • やさしいFunctional reactive programming(概要編) - maoeのブログ

    あと、やはりネットワーク周りなどI/Oの多いプログラムの書きにくさが課題になっている印象。関数的なI/OはFRPで解決できそうな気がするんだけど調べてない。そろそろFRPをちゃんと理解したいなー。 Parsec 3活用事例: Keepalived構文チェッカ - maoeのブログ なんて書いてから早1ヶ月半、ようやくFRPが掴めてきたのでわかったことをまとめてみます。 Reactive programmingって何? FRPの前に、一般的にwikipedia:en:Reactive programmingと呼ばれるパラダイムについて触れておきます。reactive programmingとは疑似言語を使ってかなーり大雑把に説明すると、 var a = 1 var b = a + 1 a = 10 // aを書き換える print b // => 11print bの出力は2ではなく11です

    やさしいFunctional reactive programming(概要編) - maoeのブログ
    paz3
    paz3 2014/09/19
    Reactive programmingとは大雑把にa:=1;b:=a+1;a:=10のときb=11になるようなプログラミングパラダイム。Functional reactive programming(FRP)は関数型にしたもの。ビヘイビア(連続値)やイベント(離散値)を組み合わせて計算する。
  • F#入門 ~関数プログラミングとは何か~

    ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521Satoshi Makita

    F#入門 ~関数プログラミングとは何か~
    paz3
    paz3 2014/07/25
    F#入門(スライド)。基本構文や高階関数、オブジェクト指向機能について簡潔に触れていてF#を俯瞰するのに非常に良い資料。
  • Reactive Programming の事をつらつら書く。 - 言語ゲーム

    最近再び Functional Reactive Programming (FRP) について調べているのでまとまり無くメモする。まず大まかな言葉の意味については http://en.wikipedia.org/wiki/Reactive_programming から辿るのが良いと思う。簡単に言うと、FRP とはスプレッドシートの計算モデルを拡張したライブラリや言語、プログラミング技術の事を言う。Function という言葉は付いていたり付いていなかったりするけど、Reactive Programming は副作用を制限する手法なので、どの手法も多かれ少なかれ関数的に使う。 FRP はかなり大雑把に使われる言葉なので人に説明するのが難しい。だけどよく似た粒度の言葉としてはコレクションライブラリくらいが丁度良いと思う。関数プログラミングや論理プログラミングのような大げさな言葉では無い。APL

    Reactive Programming の事をつらつら書く。 - 言語ゲーム
    paz3
    paz3 2014/07/01
    FRPで使う依存関係は無閉路有向グラフで記述される。Lifting=演算子のReactive拡張。Push=値の変化時に別の値を変化、Pull=必要になった時に別の値を取得する/ループが組み込まれていると親しみやすい言語になる。
  • Clojure 超入門 - Qiita

    Ubuntu での Clojure と Leiningen 超入門 JDK は既に用意出来ているものとしますね.sudo apt-get install openjdk-7-jdk とでもしておけば大丈夫なんじゃないでしょうか? (ダメだったら教えて) まず lein を取ってきてどこかパスの通ったところに設置します.そして実行権限を付与して実行します. # パスとかなんのこっちゃ勢向けコピペ用コマンド # これ実行するだけでとりあえず動かせまっせ export PATH=$HOME/local/bin:$PATH if [ ! -d $HOME/local/bin ]; then mkdir -p $HOME/local/bin; fi # ダウンロード & インストール cd $HOME/local/bin wget https://raw.github.com/technomancy

    Clojure 超入門 - Qiita
    paz3
    paz3 2014/01/22
    Ubuntu LinuxでClojureをインストールし、少し使う所まで説明している。
  • erlando - ErlangでMaybeモナドとdo記法を使う - Qiita

    ErlangでHaskell風の Maybeモナド と do記法 を使う方法。エラーチェックなどを繰り返し行うコードが簡潔に記述できる。RabbitMQの開発者が公開した erlando で実現する。 erlandoにはListモナドやStateモナドなども含まれており、もちろん自分で新たにモナドを書くこともできる。また一部のモナドではMonadPlus型も実装されており guard/2 関数などが使える。さらに、関数の部分適用を読みやすく記述できる「cut」や、関数のインポート時に関数名を変更することで名前の衝突を避ける「import as」という機能もある。 maybe(A) 型 Erlang/OTPでは処理が失敗するかもしれない関数は、失敗したことを「例外」ではなく、「戻り値」で表現する。例えば lists:keyfined/3 ではキーが見つからない場合 false を、 file

    erlando - ErlangでMaybeモナドとdo記法を使う - Qiita
    paz3
    paz3 2013/07/06
    ErlangでMaybeモナドとdo記法を使う方法。erlandoライブラリを使う。クォーテーションで囲めば'>>='関数を定義できる(ただし中置にはできない)。erlandoを使わない場合にも参考になる。
  • モナドの物理的なアナロジー

    モナドの物理的なアナロジー モナドは非常に抽象的なエンティティなので、ときには、モナドそのもの について直接考えるより、モナドのアナロジーとしての具体的なシステムを 考えるのが有用です。この方法では、物理的な直観と経験を利用して、 計算モナドの抽象的世界を再考するための洞察を得られます。 ここで展開する特殊な物理的なアナロジーは機械化された組み立てラインです。 これは、モナドに完璧に合致するものではありません。— 殊にモナド 計算の高階性ある局面の幾つかでは。— しかし、初期段階では、モナドが どのように機能するかを理解するには十分役立ちます。 Haskell のプログラムをベルトコンベヤと考えることから始めましょう。 入力はコンベヤの端に載せられ、一連のワークエリアへと運ばれます。 各ワークエリアにおいて、ベルトコンベヤ上の物品になんらかの操作が 加えられ、そしてその結果はまたベルトコン

    paz3
    paz3 2013/07/05
    ベルトコンベアをモデルにしたモナドの説明。材料をトレイに乗せる(モナド化)→Combiner(>>=)がWorker(関数)にトレイ内容を送る→結果が再びトレイに乗る。モナドを使うことでラインの組み換えが容易になる。
  • Emacs Lisp 脳と Haskell 脳 ~関数型言語ってなぁに?~ IIJ-II 山本和彦

    1 Emacs Lisp Haskell IIJ-II 2 Emacs Lisp Haskell 3 4 http://practical-scheme.net/trans/reesoo-j.html 5 Lisp Java Java Lisp 6 7 Emacs Lisp Haskell Emacs Lisp Haskell 8 9 10, 20, 30, 40, 50 0 n n 10 * 0 + 20 * 1 + 30 * 2 + 40 * 3 + 50 *4 = 400 10 10 * 0 + 20 * 1 + 30 * 2 + 40 * 3 + 50 *4 = 400 for 11 for Douglas Crockford JavaScript: http://www.crockford.com/javascript/javascript.html for JavaScript

    paz3
    paz3 2013/06/28
    [10,20,30,40,50]に位置(0..4)を乗じた合計400を求める例題を使って手続き型から関数型への発想の転換を図る。関数型でどう作るか迷ったときに参考になる。
  • http://jp.franz.com/base/seminar/2005-11-18/SeminarNov2005-Takeuchi.files/frame.htm

    paz3
    paz3 2013/06/11
    竹内郁雄氏によるセミナースライド。TAO/たらいまわし関数/ガベコレは時間軸の仮想記憶/SHRDLU、ルンバもLisp/RoboCupの通信はS式。
  • たけまる / Programming Rules and Conventions

    _ Programming Rules and Conventions [erlang] Kai-devel-ja でコーディング規約について話題になりました.Erlang に 一般的な規約があるのか知らないのですが,下記の文章がそれっぽいので 紹介します. Program Development Using Erlang - Programming Rules and Conventions コーディング規約というより,「モジュール間の依存性を減らす (特に循 環)」などの設計ルールも含めたお作法一覧です.参考になる部分が多いの で,粗っぽい日語メモを公開します. # Kai はなるべくこの文書に準拠する予定です pure function とは,副作用のない関数である.副作用は,send (!), receive, exit, get/put などプロセス環境を変更する BIF によ

    paz3
    paz3 2013/06/03
    Erlangのコーディング規約&作法一覧。
  • Scala の List クラスで map, filter, foldRight と シーケンス内包表記 | すぐに忘れる脳みそのためのメモ

    1. Scala の覚えやすそうな点と、すぐに忘れそうな仕様 Scala に興味を持った理由は、「今からでも遅くない これから始めるScala(前編)」 で挙げられていた以下の特徴による。 オブジェクト指向と関数型言語の特徴を組み合わせています。Scalaでは、関数をオブジェクトとして扱うことができますし、高階関数も利用できるなど、関数型言語からさまざまな特徴を取り入れています。 Scalaは静的型付け言語ですが、型推論によって型の記述を省略することができます。変数や関数の宣言時に、コンパイラが型を推論してくれるため、型の指定をいちいち行わなくてもよいのです。 Trait(トレイト)という、実装を持つことができるインターフェイスを利用して、Mix-Inができます。 暗黙の型変換(implict conversion)などを利用して、DSL(ドメイン固有言語,Domain-Specific

    Scala の List クラスで map, filter, foldRight と シーケンス内包表記 | すぐに忘れる脳みそのためのメモ
    paz3
    paz3 2013/05/18
    Haskelのmap,filter,foldrをScalaでどう書くかの説明。オブジェクト的、関数的な様々な表記法の例が載っている。foldLeft/Rightは/:,:\でも可。for/yieldはリスト内包表記。
  • プログラムの3つの意味論のまとめ - 射撃しつつ前転 改

    Wikipediaのプログラム意味論のページによると、プログラムに関する意味論は公理的意味論 (axiomatic semantics)、操作的意味論 (operational semantics)、表示的意味論 (denotaional semantics) の3つに大別されるそうだ。 しかし、説明を読んでも、なにがなんやらさっぱりわからない、という人の方が多いのではないだろうか。「操作的意味論: 何らかの変換を施すのではなく、その言語の実行によって直接的に意味を説明する。」という説明で膝を打つ人がいるとしたら、もうその人はWikipedia読んでる場合じゃないだろう。 たかが論理、されど論理によれば、公理的意味論とはHoareの体系の推論規則を通してプログラムの意味を与える物であり、操作的意味論とは「仮想機械の定義と、プログラムから仮想機械のコードへの変換規則(早い話がコンパイルのし方

    paz3
    paz3 2013/01/22
    プログラミング意味論={公理的意味論,操作的意味論,表示的意味論}。公理的~はHoareの体系を使う。操作的~は仮想機械とコンパイル規則を決めて終わり。表示的~はラムダ計算からプログラムの意味を定義する。
  • Haskell Day2012 - 参照透過性とは何だったのか

    3. 自己紹介 • @ruicc • Ruichi Kousuke • 好きな作曲家:A. Bruckner • 好きなバイオリニスト:Hilary Hahn • 好きな言語:Haskell • 爆発すればいい言語:PHP

    Haskell Day2012 - 参照透過性とは何だったのか
    paz3
    paz3 2013/01/18
    モナドに与える関数は引数とモナド内コンテクストにのみ依存→影響範囲が限定。モナドで機能を型として表現→型が設計図→設計が実装と共にずっと保守される。関数は疎結合→機能の直交化。(スライド)
  • 絵で見るモナド · eed3si9n

    2012-08-21 John Wiegley さんの “Monads in Pictures” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2012年8月20日 John Wiegley 著 2012年8月21日 e.e d3si9n 訳 これはモナドのチュートリアルではないし、ここには数学用語も出てこない。稿は、既にモナドを一応使えるぐらいには習った人を対象とする。視覚化することで、何のために何をやっているかが明らかになるはずだ。 関数 モナドに対する直感を得る一つの方法として関数からモナドへの抽象化をたどるというものがある。関数が何をやっているのかを簡単な絵で表してみよう。Haskell の関数の呼び出しの構文を上に、同じ演算を視覚化したものを下に置いた: 関数はある値 a を投射 (map) して別の値 b を得る。中で何が起

    paz3
    paz3 2013/01/18
    Functor(たとえばfmap)の結果の値を自動的にボックスせず、与えた関数内でボックスするとモナドになる。わかりやすい図がある。
  • 快刀乱麻を断つモナド - F#とIOモナドとコンピューテーション式の奥義と - Bug Catharsis

    ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ|          あ…ありのまま 今 起こった事を話すぜ! |i i|    }! }} //| |l、{   j} /,,ィ//|       『F#でIOモナドっぽい何かを作ろうとしていたら、 i|:!ヾ、_ノ/ u {:}//ヘ        いつのまにか、全然別モノのLazyモナドをつくっていた。』 |リ u' }  ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人        な… 何を言ってるのか わからねーと思うが /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも 何をされたのか わからなかった… ,゙  / )ヽ iLレ  u' | | ヾlトハ〉 |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった… // 二二二7'T''

    paz3
    paz3 2013/01/10
    モナドは関数の合成戦略であり、つまりデザインパターンである。
  • 『JavaScriptで始める関数型プログラミング 1 - 1』

    1 pixel|サイバーエージェント公式クリエイターズブログ サイバーエージェントのクリエイターの取り組みを紹介するオフィシャルブログです。最新技術への挑戦やサービス誕生の裏話、勉強会やイベントのレポートなどCAクリエイターの情報が満載です。 みなさま初めまして。 私、2011年4月に中途で入社、現在はアメーバ事業部でピグ×スマホ×Webの開発を担当している平松 @co_sche (co-sche)と申します。 家では楽器を弾いて自力で疲れを癒すアラサー男子です。 想定している読者は、JavaScriptの基的な構文を理解している方JavaScriptで関数を定義・使用したことのある方LLと総称される言語を扱っているが、関数型プログラミングを意識したことのない方です。 はじめに早速ですが「関数型プログラミング」という字面が長く、タイピングが辛いので所々FP(Functional Pro

    『JavaScriptで始める関数型プログラミング 1 - 1』
    paz3
    paz3 2013/01/09
    関数型プログラミング入門連載。関数型はコードの見通しがよくテストしやすくバグを作りにくく思考の道筋が増え楽しい。作用と副作用は意識して区別する。副作用は最小範囲に留める。抽象化し関数にまとめる
  • 関数型プログラミングは本当に難しいのか

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

    関数型プログラミングは本当に難しいのか
    paz3
    paz3 2013/01/08
    関数型は入力が同じなら常に同じ出力になる。手続き型言語の関数でも状態を引数として独立させれば関数型のように作れる。関数型はオブジェクト指向より理解しやすく、簡単。
  • Erlang の関数は状態遷移の状態 - 星一の日記

    最近「プログラミング Erlang」で Erlang の勉強を始めました。 プログラミングErlang 作者: Joe Armstrong,榊原一矢出版社/メーカー: オーム社発売日: 2008/02/23メディア: 単行(ソフトカバー)購入: 8人 クリック: 284回この商品を含むブログ (97件) を見る Erlang を勉強してて気づいたのですが、「Erlang の関数は状態遷移の状態」なんだ、ということです。実行中の関数が、プログラムの現在の状態に対応する、というものです。他の手続き型のプログラミング言語でもそうなのですが、「外部のアクションによる状態の遷移」は手続き型では記述しにくいです。逆に Erlang はメッセージパッシング機構があるので、アクションはそのままかけます。もちろん Erlang の最大の特徴である「並行プログラミング」によって、「並行状態」も簡単に記述でき

    Erlang の関数は状態遷移の状態 - 星一の日記
    paz3
    paz3 2012/10/16
    Erlangではアクターが次のアクターを起動(してすぐ終了)することで、アクターを状態遷移の状態とみなすことができる/Erlangのアクターは関数をspawn(並行起動)したもの。ScalaのActor(クラスで作る)より気軽に使える。
  • 2005-01-07

    id:tanakhさんに、モナドがわからんので、文系的に説明して欲しいといったのだけど、文系的表現って何って事で、答えに困ってしまいました。 http://www.sampou.org/haskell/a-a-monads/html/ これ以上の説明ってことで、正確性をなくすから、正確性の意味では以下だけど、わかりやすいって感じの文章を求めているので、、、。 うそついていいから、わかりやすく。 アインシュタインTVみたいな感じ オブジェクト指向の説明でのアクターを使った説明みたいなのが欲しい ってことなのだけど、アインシュタインTVなんて知らないだろうし、 ひとつ書いてみました。モナドの説明を最初から読みながら書いたので、例は後ろに乗ってたクローン羊の問題がいい例なので、あれを式をまったく使わずに説明したほうがいいなと。 「Haskellを勉強するにあたって重要な概念があります。それがモナ

    2005-01-07
    paz3
    paz3 2012/10/15
    モナドは計算を合成して計算するときの作戦であり、モナドにはモジュラリティ、柔軟性、分離性という性質があると書かれている。