この記事は LL/ML Advent Calendar 2 トラック目 2 日目の記事です。 Twitter でふらふらしていたら巻き込まれました。コワイ!L をふたつ入れるために大仰なタイトルをつけてしまったので、 Lisp はマルチパラダイム言語であるとか、 Common Lisp は素敵なオブジェクト指向言語でもあるとか、 Scheme は Algorithmic Language だと RnRS にも書いてあるとか*1、そういう前書きがあったのですが、そういうのはばっさりカットして、今回は(正格評価の)関数型プログラミング言語でよく話題になる末尾呼び出しについて書きます。 末尾呼び出し?まずは「末尾呼び出し」や「末尾呼び出しの最適化」という言葉の意味を簡単におさらいしておきます。必要のない人は読み飛ばして構いません。末尾文脈(tail context)における手続き(関数)呼び出し
I've been programming in python for a few years now, and I'm still often amazed by how clear and DRY well written Python code can be. There are many small tips and tricks I've learned over time, mostly by reading the code of popular open source projects, such as Django, Flask, Requests and others. Here are a few things I've picked up that are sometimes overlooked, but can really help with everyday
I’ve been reading up on all the great new stuff in Scala 2.10.0-RC3, and as always, one of the features mentioned is performance improvements. I was curious today what that meant for functional style work, so I wrote up a short microbenchmark to test it. I created a Sieve of Eratosthenes using streams, and a Sieve of Sundaram, both shown below: Sieve of Eratosthenes – def eratosthenes(toNum: Int)
この記事はCommon Lisp Libraries Advent Calendar 2012 - Qiitaのために書かれました。タイトルは釣りです。 みなさんCommon Lisp書いてますか?僕は書いてます。Scheme書きたいと叫びながらLispを書いています。 Schemeのシンプルさが堪らなく欲しい中Lispでdirty hackをたくさん書いています。 ソウルジェムがおしるこのように濁っています。 さて、今日はそんな乾いた心に潤いを与えてくれるライブラリ、"iterate"を紹介したいと思います。 とんでもなく便利なライブラリなのですがなぜか日本語の情報が全くないのでこれを機にブログで紹介したいと思います。 iterate, the extensible iteration construct 概要iterateは一言で言ってしまえば「loopマクロ・リローデッド」です。 C
2012/12/1に福岡Ruby会議01を開催しました! 言い出した時はどうなることかと思いましたが、なんとか最後までやり切ることができました。 (当日は開催前に全滅の恐れがありましたが。。。) 東京から@kakutaniや@yotii23が参戦してくれたり、県外からの参加者がいたりで本当に盛り上がった会議になったと自分では思っていますwwww! スポンサーの皆様、会場を提供してくださったGuildCafe Costa様、本当に有り難うございまいした! (皆さんブログで紹介してもらえると嬉しいです!!) スポンサー 日本Rubyの会GaiaX10xlab会場 GuildCafe Costa / ギルドカフェ コスタ当日のタイムテーブルはこちら 福岡Ruby会議01福岡Ruby会議のtweetまとめ #fukuokark01 のまとめFukuoka.rbのロゴはこちらにあげてあります。 自由
Posted at November 27, 2012 by Nicholas C. Zakas Tags: Algorithms, Computer Science, JavaScript, Sorting Most discussions about sorting algorithms tend to end up discussing quicksort because of its speed. Formal computer science programs also tend to cover quicksort1 last because of its excellent average complexity of O(n log n) and relative performance improvement over other, less efficient sorti
前回: http://d.hatena.ne.jp/xyz600/20121028/1351428339 前回swapする方法だと上手く行かなかったからKD-Treeを作って近傍に線を引いていこうと思ってたんだけど、どうやらinverseの法を高速化して工夫すると十分良いらしい(研究室の先輩談)。 inverseさせる方法というのは、単にランダムに2点を選択して2点間の経路を反転させるというもので、2点をswapさせる方法より辺の変化数が少ない(inverse = 2, swap = 4)分優秀とのこと。 頂点の数をnとするとナイーブに計算すると経路反転にO(n)かかるから、データ構造を作ることになるけど、経路反転を高速に出来るデータ構造は知らない... しばらく探してたら、こんなのが見つかった。 http://www.slideshare.net/iwiwi/2-12188757/1 T
授業でSVMについて習ったけど、実際に実装したことなかったからやってみた。簡単って言われてるけど、制約付き2次計画問題の実装が結構大変だった(収束しないケースとかたくさんあったり、制約条件を遵守したり) 参考にしたのは、以下の本やらページやら http://www.amazon.co.jp/%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%83%99%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%9E%E3%82%B7%E3%83%B3%E5%85%A5%E9%96%80-%E3%83%8D%E3%83%AD-%E3%82%AF%E3%83%AA%E3%82%B9%E3%83%86%E3%82%A3%E3%82%A2%E3%83%8B%E3%83%BC%E3%83%8B/dp/4320121341/ref=sr_1_1?ie=UTF8&qi
3 Tips on Improving Sleep Quality for Mothers Working in Software Development Working as a software developer is a highly demanding career, and since more and more people are entering the job market as developers and programmers, it has become more important for new parents to find a balance between work and family life. Software developers may need to spend a minimum of 40 hours a week in front o
水曜日の夜に生まれたminimap-vim、このプラグインを私がどう設計し実装したのか、その思考と行動の推移を再現してみましょう。 水曜日の夜に生まれたminimap-vim、このプラグインを私がどう設計し実装したのか、その思考と行動の推移を再現してみましょう。なおこの記事はVim Advent Calendar 20122日目の参加記事となります。 前置き Sublime Textのminimap確かにかっこいいなぁ。マーカー程度のことならsignでできるけどなぁ Sublime Textのminimap確かにかっこいいなぁ。マーカー程度のことならsignでできるけどなぁ — tyruさん (@tyru) 2012年11月28日 きっかけは tyru さんのこのつぶやきが目に止まったことでした。これを見た私は、ふとあることを思いつきます。 @tyru ふと思った。gvimもう一つたちあげ
Garbage Collection Advent Calendarの2日目の記事です。 Ruby2.0.0の目玉機能である ObjectSpace.reachable_objects_from の活用法を書いてみましょう。 ドキュメントはソースコードのRDocを ruby/ext/objspace/objspace.c at 020cc0ad5c5b4b2b2aac9e0a7fc9d35cfc76dfdc ? ruby/ruby ? GitHub とあるオブジェクトがメモリリークしているとわかった時、どこから参照されているか調べたいわけです。その参照を切ればちゃんとGCされるはずですので。 ということで、以下のようにObjectSpace.each_objectを併用して調べてみます。 require 'objspace' def foo @bar = ["I am bar"] @baz
※この記事は古い記事です。最新のgnuplotではもっと簡単にコードを書くことができます。動くことは動きますが、まわりくどいコードが載っていますので、あまり参考にしないで下さい。 以下は自分の過去記事です. Makefileで遊ぼう 〜 階乗, フィボナッチ数, Brainfuck処理系まで - プログラムモグモグ プログラマーのためプログラミングLaTeX - プログラムモグモグ どうやらこういうの好きみたい. 今回は, gnuplotでプログラミングをします. 最近, gnuplotの利用率が半端ないほど増えていて, 結構自由自在に扱えるようになってきたのです. 大量のグラフをgnuplotで捌いている時の快感は良いものです. でも, この記事ではgnuplotなのにグラフは一切描きません!!! 他のサイトで勉強してください. Makefileは足し算や引き算すら苦労したのですが, g
CodeIQというプログラミング課題に挑戦するサイトに、Rubyでジャンケンクラスを作れという問題があったのでやってみた。すでに問題は読めなくなっているけど、こんな感じのJankenクラスを作れという。 $ irb > require './janken.rb' > left = Janken.new > right = Janken.new > left.versus(right) 左の人が勝ました。右「チョキ」左「グー」 > left.versus(right) 右の人が勝ちました。右「チョキ」左「パー」 : :繰り返しirbで実行できるように、とある。 問題を見た瞬間、これは問題自体がおかしいのではないかと思ったけど、やってみた。 # -*- coding: utf-8 -*- class Janken attr_reader :hand NAME = { goo: "グー", ch
この記事はCompetitive Programming Advent Calendar Div2012の2日目の記事です。 12月20日追記: Darseinさんが20日目の記事で、ビット演算についての詳しい説明を紹介してくださっています!必読ですね!!!!:) はじめに Y^´ ∨// /,∠ ,. ' /l/// /, ' , '/ ! | l }´ 〈 〉 変 〈/ , ' // ̄`>< /// /// _,.=‐|'"´l l〈 変 / 〈 態. ∨, '/l| ,.'-‐、`//`7/ /''"´__ | ハ l丿 態 { 人) ! ! (/! |ヽ〈_ ・.ノ〃 〃 / '/⌒ヾ.! ,' !く ! ! (_ ト、__/ ヽ、_,.イ /l l |:::::::```/:::::/...´..
EuroPython 2012 Talk in Florence. Video here: http://www.youtube.com/watch?v=UjdU77m1228
本日12月1日より、プログラマ有志による2012年の技術系Advent Calendarが各所ではじまる 本日12月1日より、プログラマ有志による2012年の各技術系Advent Calendarが一日目を担当する人のblogではじまっている。定番化したと言っていいほどの、師走の風物詩になっている。 昨年は技術系Advent Calendarが多方面で行われたが、今年は昨年を超える技術系Advent Calendarが12月1日より行われそうだ。 一般的なAdvent Calendarは、12月25日のクリスマスを楽しみに待つために、12月1日から24日までのカレンダーの日付の部分(扉だったりする)を開けるようになっており、1日ずつその日の日付の部分を開くと天使や動物の絵などが見えるという仕組み(もちろん、様々なバリエーションがある)。 これに発想をえて、技術系Advent Calen
(このエントリはLisp Advent Calendar 2012 1日目の記事です。) はじめに 2年ほど前に、「◯◯言語基礎文法最速マスター」という、それぞれの言語の基本的な文法を説明したブログ記事を書くのが大流行した時期がありました。その流行り具合は、まとめ記事にまとめられた記事の数を見てもうかがい知ることができると思います(たとえば、こことか→プログラミング基礎文法最速マスターまとめ - ネットサービス研究室)。 それで、これだけたくさんの言語がカバーされてれば当然Clojureもあるだろうと思ってググってみましたが、意外にも2年経った今も「Clojure基礎文法最速マスター」はないみたいです。で、僕は入門記事みたいなのは書くのが苦手なのでやらないんですが、「Clojureの基礎文法とは何ぞや」ということを改めて考えてみました。 で、「基礎」をfoundationと考えれば、コンパ
孤独のHaskellに行ってきた.ので,感想とそのフォローアップになりそうなことを書く. とてもいい会だったように思う. 遅刻して現場に付いたらRLEしてみようという例題("AABBCCC"を"A2B2C3"にする関数を書こう)をやっていて, id:khibino0 さんがおもむろに import Data.List ( group ) import Control.Arrow rle = concatMap (uncurry (:) . (head &&& show . length)) . group のような解をブッパしてたりするなど.で,各自自前実装してる人たちのコードとか見ると「細かい操作でボトムアップにやりたいことを実現しようとしてるなー」と感じることが多かった.Haskellの場合(なのかは知らないが)もっと大域的な変換からトップダウンに考えていったほうがシンプルでソレっぽい
00:26 12/12/18 BookLive! 7月に出会ってからずっと電子書籍ストアとして BookLive! をひいきにしているのですが、一体どこが好きなのか語りたくなりました。 ITMedia の これでもう迷わない、電子書店完全ガイド という一連の記事の、 電子書籍の端末の話よりストアの話をしましょうよというコンセプトに思いっきり影響されています。 といっても、第一印象が「普通のことが普通にできるので感激した!!」というもので、 つまり今年の前半に使っていた幾つかの電子書籍ストア/専用アプリが残念だっただけかもしれません。 買った本がどこをクリックすれば読めるのか理解するのに10分かかった、とか、 6冊以上買うと本棚アプリから画面外に本がはみ出るので手でいちいち棚を変えて整理しないと読めない、とか。 本当に普通に使えるという以上に特筆することもないんですが、 あ、でも、今年になる
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く