タグ

closureに関するmnruのブックマーク (10)

  • イミュータブル時代の言語としてのClojure - Qiita

    この記事はRich HickeyのClojureのコンセプトを示したリソースへのリンク集です。 このリンクを追っていけば、LISPであることやBetter Javaであることなんてものは表面的な特長に過ぎず、イミュータビリティ(とシンプルさ)こそが最大の特長であるということに気付かされます。 ClojureはOut of the Tar Pit (PDF) という論文に基づいて、状態とふるまいを分離するように言語設計されています。レースコンディションのような偶発的におこりうる問題は、状態とふるまいが一体となった混沌から生まれるのであって、これを分離してどうしても避けることの出来ない状態の管理だけ特別に扱うという考え方です。 オブジェクト指向が状態を安易に変更できてしまうのは、「状態」と「アイデンティティ」が密結合しているためです。ある2つのオブジェクトが同一かどうかは、問題領域に依存してい

    イミュータブル時代の言語としてのClojure - Qiita
    mnru
    mnru 2016/11/15
  • [JavaScript] 猿でもわかるクロージャ超入門 まとめ - DQNEO起業日記

    クロージャとは クロージャは、言葉で説明するのが大変難しい概念です。 あなたは、自転車の乗り方を、口だけで説明できるでしょうか? あなたは、螺旋(らせん)の形を、言葉だけで説明できるでしょうか? ずばり、できないでしょう。 しかし、自転車に乗ることはできますし、針金で螺旋の形を作ることはできるでしょう。 「クロージャ」もこれと同じです。 だから、Wikipediaのこんな解説を見ても落ち込まないでください。 クロージャ (クロージャー、Closure) は、プログラミング言語において引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決する関数のことである。 理解できないですよね? 私もそうでした。 クロージャを既に知っている人にしか、この文章は理解できないでしょう。 クロージャを作るのは難しくない しかし、説明するのは難しくても、作るのは意外と簡単。それが

    [JavaScript] 猿でもわかるクロージャ超入門 まとめ - DQNEO起業日記
    mnru
    mnru 2015/04/10
  • Clojure事始め〜Leiningen,VimClojure〜

    Mar 17, 2012 最近Clojureにはまってます。駆け出しLisperを自認する自分としてはナウいLisp方言のClojureに手を出さないわけにはいかないのです。 布教の一貫として、Clojureを(Macで)スタートするために必要な諸事項をまとめていきましょう。何分過去の色褪せた記憶なので間違って部分もあるかもしませんが、大体は今でも通用するはずです。 アジェンダ Leiningenのインストール VimClojureのセットアップ Lieningen Leiningenとは、Clojureのビルドツールです。必要なライブラリの依存関係を解決してくれたりするやつ。 これのセットアップはとても簡単です。 % brew install Leiningen これだけです。ちなみにclojure自体のインストールはleiningenが勝手にやってくれるので必要無いです。むしろ初学者は

    mnru
    mnru 2012/07/26
  • Groovy - Japanese Tutorial 2 - Code as data, or closures

  • Rubyでクロージャ、カリー化 | Netsphere Laboratories

    (2006.1.28の日記を修正、加筆。) (2006.10.8 新規公開。) Rubyの生産性の高さの理由のひとつクロージャ (closure; 閉包) と、関数・クロージャの単位で再利用できるようにするカリー化について。 コールバック関数 Rubyの話のまえに、クロージャのないC/C++で関数を再利用する方法、その問題点を見ていく。 まずは、単純なコールバックについて。コールバックといえばqsort()関数。引数として二つの値を比較する関数を渡す。 #include <stdlib.h> #include <stdio.h> int compare(const void* a, const void* b) { return *(const int*)a - *(const int*)b; } int main() { int a[] = {3, 4, 1, 2}; int i; qs

  • Efficient data transfer through zero copy

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Efficient data transfer through zero copy
    mnru
    mnru 2010/10/26
  • "Closures are poor man's objects and vice versa" - What does this mean?

    mnru
    mnru 2010/10/26
  • クロージャ - Wikipedia

    クロージャ(クロージャー、英語: closure)、関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数にて利用可能な機能・概念である。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。関数とそれを評価する環境のペアであるともいえる。この概念は少なくとも1960年代のSECDマシンまで遡ることができる。まれに、関数ではなくとも、環境に紐付けられたデータ構造のことをクロージャと呼ぶ場合もある。クロージャをサポートする言語によるプログラミングでは、単に関数の中に関数を定義することができるだけでなく、その際に、外側の関数(エンクロージャ)で宣言された変数を暗黙的に内側の関数に取り込んで操作することができる。主な利点としてはグローバル変数の削減やコールバック関数記述の簡素化が挙げられる。 典型的に

    mnru
    mnru 2010/10/25
  • 不自然なcar/ナチュラルにconsして

    This document appears to be notes from a presentation on Clojure. It discusses key features of Clojure like how it differs from Lisp, its use of REPL for documentation, lambda functions and macros. A large portion of the document covers concurrency in Clojure, explaining concepts like STM, atoms and agents. It provides examples of using Clojure's STM functions like ref, deref, alter and compares t

    不自然なcar/ナチュラルにconsして
    mnru
    mnru 2010/07/17
  • Martin Fowler's Bliki in Japanese - クロージャ

    http://martinfowler.com/bliki/Closure.html 動的言語に興味がでてくると、 クロージャやブロックと呼ばれる概念に出会うと思います。 C/C++/Java/C# などクロージャを持たない言語をご使用の方は、 どういったものなのかご存知ないかもしれません。 ここでは簡単にクロージャについて説明します。 クロージャを持った素晴らしい言語を使ったことある方にとっては、 あまり面白くない話かもしれません。 クロージャは長年使用されてきました。 私が最初に出会ったのは、おそらく Smalltalk だったと思います。 Smalltalk ではブロックと呼んでいました。 Lisp ではクロージャを多用しています。 Ruby でもクロージャが提供されています――多くの rubyist がスクリプト言語に Ruby を選ぶのはこのためです。 基的にクロージャとは、ブ

    mnru
    mnru 2010/04/07
  • 1