タグ

関数に関するpochi-mkのブックマーク (15)

  • 翻訳:"Inside Clojure's Collection Model" - 草の根Clojure日記

    The original article is written by Alex Miller (@puredanger). Translated by Keisuke Fukuda (@keisukefukuda) この記事は,”Inside Clojure’s Collection Model”の日語訳です.原著者のAlex Millerさんの許可を得て公開しています.翻訳に関する指摘は翻訳者まで.(athosさんありがとうございました) Alex Millerさんは,Clojureの主要な開発者の一人であり,リリースマネージャの役割もされ,メーリングリストにおける活動量も非常に多い方です.また,Clojure Applied: From Practice to Practitionerの著者でもあります. Clojureのコレクションについて,私(翻訳者)の記事「Clojureにおけ

    翻訳:"Inside Clojure's Collection Model" - 草の根Clojure日記
  • DAGベース分散処理プラットフォームOnyxの紹介 - 本当は怖いHPC

    この記事は Clojure Advent Calendar 2015 - Qiita の12月22日の記事です(微妙に遅刻しましたすんません) データを関数で変換しながら次々に処理していくことを考えましょう。関数を頂点、頂点同士の処理の順番と依存関係を辺とするグラフ構造を用いて処理を表現することができることがわかるでしょうか。古き良きフローチャートと似たものです。処理がループすることを許さないとすると、このグラフ構造は有向非循環グラフ、つまりDirected Acyclic Graph (DAG)となることがわかります。 例えば、下の3つの関数を連続して呼び出すコードは (defn f [x] ;; なんとかかんとか) (defn g [x] ;; なんとかかんとか) (defn h [x] ;; なんとかかんとか) (def call [x] (h (g (f x)))) のようになりま

    DAGベース分散処理プラットフォームOnyxの紹介 - 本当は怖いHPC
  • 仕事が10倍捗るスプレッドシート神関数10 | Tokyo Otaku Mode Blog

    こんにちは。Tokyo Otaku Modeの安宅です。先日から、とあるプロジェクトにジョインして、久々にGoogleスプレッドシートをゴリゴリ活用して仕事をしています。そんな中、これは惚れた!というスプレッドシートの神関数を紹介したいと思います。 ARRAYFORMULA関数 これを活用し始めてから、関数をいちいち全部の行に埋め込んでいくことが、なんだかカッコ悪く感じるくらい、スマートでオシャレな関数です。例えば、100行のVLOOKUP関数を行うときには、これまではVLOOKUP関数を1つ作って、それを残り99個の行にVLOOKUP関数をコピーしていたと思いますが、ARRAYFORMULA関数を使うと、なんと1個の関数で100行分の値が出力されます。実際に動作も軽くなるのでカッコよさと実用性を兼ね備えた関数です。配列に対応する関数であれば、ほぼなんでも利用できるのも好感度が高いです。

    仕事が10倍捗るスプレッドシート神関数10 | Tokyo Otaku Mode Blog
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    pochi-mk
    pochi-mk 2014/10/18
    継続渡しスタイル、わかったかも。
  • (Gauche)バブルソート - Code Aquarium

    今読んでいる数学ガールガロア理論がバブルソートにちょっとだけ触れていました。 考えてみるとバブルソートは何となく概要を知っている程度で、実装した記憶がありません。振り返るとバブルのつもりが結局挿入ソート的な物を書いて終わってることが多いような気がします。 そこで正式なバブルソートというものを調べてみました。 今回は、ベクタに適用すると、in place で破壊的にソートする関数を作ります。 1.二重ループでバブルソート (define (vector-bubble-sort! vec :optional (swap? default-swap?)) (define len (vector-length vec)) (do ((head 0 (+ head 1))) ((>= head (- len 1)) vec) (do ((i (- len 1) (- i 1)) (k (- len

    (Gauche)バブルソート - Code Aquarium
    pochi-mk
    pochi-mk 2014/10/18
    「インデックスをリストアップしてから1ループで処理」この発想はなかった...面白い。
  • Clojure1.7のtransducersとはなにか

    Aug 10, 2014 Rich Hickey様から以下のような発信がなされました。 Clojure1.7にtransducersというものが追加されるよ、という話です。 Transducers are Coming — Cognitect Blog どんなものかというと、従来のcoreのシーケンスを扱う関数群に新しい機能が追加されていてたとえば (map inc) これがmapping transducerというtransducerを返します。 このtransducerを使って (def xform (map inc)) (sequence xform '(1 2 3)) ; => (2 3 4) (into xform [1 2 3]) ; => [2 3 4] このように任意のtransducerによるシーケンスの変換ができるわけです。ほかにも多数の関数がtransducerを扱え

  • オレオレF#コンパイラを作って集合論の記号(∩とか∪とか)の演算子が使えるようにする | Moonmile Solutions Blog

    @igeta @7shi 関数型言語の来は、演算子の多さにあるので、限定した記号の組み合わせだけでなく⊆とか∩とかを使いたいのです。 — 増田 智明 (@moonmile) 2014, 3月 12 公式ツイッターのメンション機能が「@」から「ベルマーク」になったんだけど、こういう変更を見ると、つくづく「表意文字」のことが分かっていないなぁと思う。このあたりは日人のほうが優位性があるんだが…という話はどこかでやりたい。 — 増田 智明 (@moonmile) 2014, 3月 12 を同時に実践しようと思って、F#のコンパイラを半日ほどいじってみました。 F# のコンパイラのソースコードは↓でダウンロードができます。 F# PowerPack with F# Compiler Source Drops – Source Code https://fsharppowerpack.codep

  • 「関数型Ruby」という病(6) - 関数合成と文脈、Proc#liftとProc#>=、そしてモナ - ( ꒪⌓꒪) ゆるよろ日記

    前回から一年以上が経過しているけど、最近lambda_driver.gemに機能を追加したので、そのことについて書こうと思う。 Rubyで、モナ……っぽい関数合成を実装した話だ。 Rubyで関数合成とかしたいので lambda_driver.gem というのを作った - ( ꒪⌓꒪) ゆるよろ日記 関数合成 関数合成については以前に書いたので、こちらを見て欲しい。 「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記 おさらいをしておくと、関数合成とは、 関数gと関数fから、g(f(x))という関数hを新たに作り出すことだ。 (g ∘ f)(x) = g(f(x)) 関数gと関数fの合成関数g ∘ fに引数xを渡した結果は、関数gにf(x)の結果を渡したものと等しい。つまり、このような操作である。 f = lambda{|x| x + 1

    「関数型Ruby」という病(6) - 関数合成と文脈、Proc#liftとProc#>=、そしてモナ - ( ꒪⌓꒪) ゆるよろ日記
  • (PowerShell)ScriptBlockで文脈を作る。あと年賀状も。 - Code Aquarium

    この記事は,PowerShell Advent Calendar 2013の7日目の記事です。 なお、私のPowerShell環境は V3 です。以下すべて検証は V3でのみ行っています。 ScriptBlockで文脈を作る ScriptBlockで高階関数を作るとコンテキストをカスタマイズしているかのようなコードが書けます。 PowerShellの冗長性をなんとか回避できないかと奮戦している最中なのですが、その中途半端な成果物をお見せします。 first 関数 function first ([ScriptBlock]$Body) { $input | select -First 1 | % { & $Body } }Select -First 1 と書くのが面倒なので関数にしたものです。 一要素しかないオブジェクトをパイプに流して処理する場合にもよく使っています。 new Uri "h

    (PowerShell)ScriptBlockで文脈を作る。あと年賀状も。 - Code Aquarium
    pochi-mk
    pochi-mk 2013/12/08
    年賀状、そろそろ準備しないとまずい(毎年)。
  • data.jsonでJSONの読み書き - Homoiconic Days

    (このエントリは Clojure Contrib Library Advent Calendar 3日目の記事です。) はじめに 3日目の今日はdata.jsonについてです。 data.jsonは名前が示すとおり,JSON形式の読み書きをするために使います。以前はclojure.contrib.jsonという名前でした。 ひと昔前は,ClojureでJSONというと,clojure-jsonやclj-json,cheshireなどいろいろなライブラリが競合していました。現在では,data.jsonがデファクトスタンダード的な位置にあり,Web関連のアプリケーションを中心に広く使われています。初日の記事の Clojure Contrib ライブラリとは に記載したランキングを見ても,data.jsonがよく使われていることが分かります。 このエントリでは,data.jsonの使い方を説明し

    data.jsonでJSONの読み書き - Homoiconic Days
    pochi-mk
    pochi-mk 2013/12/04
    JSONとClojure。実はとっても相性が良いと思ってます。
  • カリー化関数を利用して非同期処理を整理する

    サンプル1 サンプル2 Google Map Apiを使っての地図作成では、 geocodeで緯度経度取得→地図移動→XHR→地図上にマーカー表示 位置情報取得→地図移動→XHR→地図上にマーカー表示 上記の処理をよく行いますが、「geocode」「位置情報取得」「XHRでのデータの取得」などは基”非同期”の処理のためコールバックが入れ子になって複雑になりがちです。 そんなときは、curryを使って非同期処理のコールバックをまとめるとシンプルに整理できたりします。 実際にsampleを作ってみました。 位置情報を取得して周辺500m内の車椅子可のお店を表示する地図です。(位置情報が使えない場合は住所で検索してください) sample ↓ curryを使うことで非同期処理をこんな感じに書けます。詳しい内容はリンク先のソースを参照してください。 //json取得時のコールバックを束縛 var

    カリー化関数を利用して非同期処理を整理する
  • Monad Comprehension in Clojure

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    Monad Comprehension in Clojure
  • curryは飲み物 - 146,000

    概要 LISPでカリー化された関数を定義するマクロを作ってみた.カリー化された関数は,必要な数の引数が渡されればただちに評価されて結果を返すが,引数の数が足りなければ部分適用された関数となる.それもまたカリー化されている. 動機 昨日も一日中椅子に座ってJava書いて……今日も一日中椅子に座ってJava書いて……きっと来週も再来週も一日中椅子に座ってJava書いて……毎日毎日同じ事の繰り返しで,生きてる気がしないんだYO! 簡単なカリー化 定義通りカリー化するだけなら,こんなふうにすればいい. (defun currying (arg-list &rest body) (let* ((args (reverse arg-list)) (last-arg (car args)) (other-args (cdr args))) (reduce #'(lambda (acc elem) `(l

    curryは飲み物 - 146,000
    pochi-mk
    pochi-mk 2013/05/08
    よく分かるカリー化、というかこれ読んでカリー化というものがよくわかった気になった(自分ではまだ書けないけどw)。
  • よくわからない最適化 - もなもなもなかのページ

    (2013-05-03 21:57 JST : ソースコードの誤記修正) 話のマクラ 新製品リリース前でプログラマーズハイになっておられるらしい shi3z 氏が,イカしたエントリを挙げておられる. ついに僕もソースコードを確認しないと気が済まなくなりました。当にちゃんと最適化してるのか、自分の目と頭とで確認しています。 よくわかる最適化 – UEI shi3zの日記 をを! 社長自ら! すごい! この関数は、一見すると無駄がないように見えますが、実は無駄の塊です。 たとえばコンピュータは割り算が苦手です。なのに二回も割り算をやっています。 割り算よりは掛け算(乗算)の方が圧倒的に速い(下手すると10~100倍くらい?)ので、まず割り算をしている部分を2.0の逆数の乗算に変更します。 よくわかる最適化 – UEI shi3zの日記 最近,トシのせいかすぐに感涙してしまう私は,感化されて,

    pochi-mk
    pochi-mk 2013/05/03
    shi3z 氏のエントリーがちょっと虚しい感じがしたのは、「局所最適化っていうのは環境によってはあんまり意味が無い」っていうことなんだろうなぁ。
  • Java 8 を関数型っぽく使うためのおまじないを F# でやってみたを Scheme でやってみた - 月の塵

    SchemeJava 8を関数型っぽく使うためのおまじないをF#でやってみた - ぐるぐる〜何だかよくわからないですが、 lambda といえば Scheme (というか Lisp)なので、似たようなことはどうとでもできます。上記の記事のパクリなので、上記の記事をまずは読んでから読むことをおすすめします。Scheme が関数型プログラミング言語かどうかはよく知りませんが、最近眺めていた Declarative Continuations and Categorical Duality に "a modern functional programming language, s.a. Scheme or ML" (p. 7) という表現があったので、まあ大丈夫でしょう。 型Scheme では何らかの値の集合を型 (type) と呼びます。手続きの型は procedure? という手続きに渡し

  • 1