Shammer's Philosophy

My private adversaria

2012-06-01から1ヶ月間の記事一覧

【LISP繰り返し Hack 】do を展開してみる・その2

【LISP繰り返し Hack 】do を展開してみる・その1 - Shammerismの続きで、tagbody と go を使ってみた。dolist のようなものを想定して書いた。 ? (let ((target '("XXX" "YYY" "ZZZ"))) (tagbody loop-start (let ((x (car target))) (if (null x) (go loo…

push を使って dictionary を実現する

何かデータを一箇所に保存しておく、そんな箱を簡単に実現したい。昔、Lisp 独自 dictionary version 20111105 - Shammerismで書いたものがあるが、あまりにイケていない。。。push を使うと、もっとシンプルになった。 ? (defparameter table nil) TABLE ? …

関数渡しでif-elseを実現する

sort するには注意が必要 - Shammerismで、関数を引数として渡すことができることの可能性を考えてみたが、うまい例がなくそんなにすごいとは思えない感じになってしまった。なので、少しはマシと思える例を考えた。 (defun if-else (value cond yes no) (if…

sort するには注意が必要

sort 関数を使ってみた。これは破壊的なようで、使い方を間違えるといろいろと問題を引き起こすことになりそうなのでメモ。 フラットなリストをsortする 並び換え対象のリストがフラットであれば、あまり難しいことはない。並び換えの前にコピーしておけば、…

remove-if と remove-if-not を理解する

リストの中から、特定の条件に合致するものを削除するのが remove-if で、特定の条件に合致しないものを削除するのが remove-if-not だ。定義はわかっていても、引数に lambda 式が必要なのであまり使っていなかった、というか、強引に自力でリストの中身を…

【LISP繰り返し Hack 】do を展開してみる・その1

一応、LISP でも繰り返し構文がある。一部の書籍だと、関数型言語は繰り返し構文でなく、再帰で繰り返しを実現する、、、とか書いているがとんでもない。黎明期にはそういう時期もあったかもしれないが、そもそも関数型とは、変数の型に整数型、文字列型、浮…

Java Mail Sample

たまにしか書かないので忘れないようにメモ。 Sample Source Code import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.internet.InternetAddress; import javax.mail.internet.…

動的ローディングのサンプルコード

C

三つのリンク方式 - Shammerismで動的ローディングのコードを書いていなかったので、それを実装。と言っても、http://www.amazon.co.jp/C言語による-スーパーLinuxプログラミング-Cライブラリの活用と実装・開発テクニック-飯尾-淳/dp/4797361204で紹介され…

HTML変換コマンド

業務でテキストベースの文字をHTML対応のために(あくまで個人的都合で)変換していたが、さすがに面倒になってコマンドを定義したいと思ってちょっと調べてみた。以下のBlogの内容をちょこっと変更すればできそうだったのでやってみました。ブログの方、あ…

三つのリンク方式

C

C言語では、mainプログラム、というかmain function から実行される。通常のプログラムは、main のみで収まるサイズではないので、main 以外の関数に処理を小分けして、それを順番に呼び出すことで実行していく。しかし、その小分けされた関数でも数が多くな…

アセンブラコードまで展開してみる

C

gcc のオプションで -S というものがある。これを使用すると、アセンブラまで展開してくれて、拡張子 .s のファイルができる。当然だが、この拡張子 .s のファイルをコンパイルして実行コードを生成することも可能。 $ ls test.c $ gcc -S test.c $ ls test.…

LISP で改行しながら文字列出力する・その後

LISP で改行しながら文字列出力する・改 - Shammerismで文字列を改行と合わせて出力するように書いてみたものの、write を使用するとファイルに出力されたときにダブルクォートが残ってしまうことがわかった。ダブルクォートを残さないようにするには、write…