[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

gaucheに関するpochi-mkのブックマーク (7)

  • (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ループで処理」この発想はなかった...面白い。
  • マクロとクロージャで作る並行プログラミング言語 - Think Stitch - PRINCIPIA

    Lisp Advent Calendar 2013の参加エントリです. Lisp の特徴の1つとして,マクロを使って拡張言語(埋め込み言語)がかんたんに作れるという点があります. また Lisp はファーストクラスオブジェクトとしてのクロージャを持っており,継続渡しスタイル(Continuation-Passing Style, CPS)と組み合わせると,軽量プロセスがかんたんに作れるということもよく知られていると思います. そこで Lisp が持つこの2つの特徴を生かして,小さな並行プログラミング言語を作ってみたいと思います. 処理系は Gauche を使います.以下のモジュールを使います. CSP について ここで作る並行プログラミング言語は,CSP という理論を基礎にします. CSP とは Communicating Sequential Processes の略で,並行に動作するプ

  • Rubyのtimesが羨ましかったので - (define -ayalog '())

    この前、@alea12とぜろゆ嬢と3人で焼肉行ってた時に、Gaucheで10回Hello,worldを表示するのを見せたら、Rubyのコードでドヤ顔されて悔しかったのでRubyのtimesっぽい書き方ができないか試してみた話。 見せたのは以下のコード。 (for-each (lambda (x) (print "Hello, world")) (iota 10)) なんか、Hello,worldって10回出力するだけなのに、直感的じゃない?個人的には少し微妙。 以下、やってみた お題「10回標準出力にHello, worldを出力する」 Rubyでループのやり方の例を出すときによくやるアレですね。 10.times do p "Hello, world" end 短いし、素直で読みやすいね! Rubyのこういう部分好きだなーって思う。だけど、Schemeは前置記法という呪いに囚われているの

    Rubyのtimesが羨ましかったので - (define -ayalog '())
    pochi-mk
    pochi-mk 2013/07/08
    Clojure だと自分は (dotimes [_ 10] (println "Hello, world")) と書いちゃいます。'_' が余計といえば余計だけど、あまり細かいことは気にしない性格だし。
  • Gauche:LandOfLisp

    ちょっとだけトリッキーなのはgame-readで、Common Lispのreadは 後続の空白文字(改行文字含む)を消費するので、 > (game-repl) とタイプしてRETを打った時、入力バッファは空で、game-read はすぐに ユーザの入力待ちになるのだけれど、Gaucheのreadは後続の空白文字を消費しない。 gosh> (game-repl) とタイプしてRETを打つと、REPLは閉じ括弧まで読んですぐに(RETを入力に残したまま) game-replを実行する。その中から読まれる game-read は最初に 残っていたRETを見るので、最初のread-line で空の文字列が帰ってくる。 移植版ではこのケースへの対応が入っている。 Shiro(2016/02/02 23:30:58 UTC): 現在の開発版Gaucheでは、REPLについては後続の空白を 読み飛ばす

    Gauche:LandOfLisp
    pochi-mk
    pochi-mk 2013/02/24
    Land Of Lisp の Gauche への移植。
  • Gauche から wkb (well-known binary) を読み込めるライブラリを書きました - chaotic valkyrie

    wkb とは GIS 分野において、点や線分、多角形を扱うフォーマットです。 binary の名の示すとおり、バイナリフォーマットです。 wkb と wkbhex wkbhex は wkb を hex 表記したもので、0x00 0x80 0xff 0x00 というバイト列ならば、"0080FF00" といった文字列表記になります。 ソースコード Github にあります: https://github.com/cryks/Gauche-wkb みどころ 題です。 wkb パーサは実のどころどうでもよくて、wkbhex をバイナリポートに変換するルーチンです。 (define (read-hex-string :optional (iport (current-input-port))) (glet* ([higher (read-char iport)] [lower (read-cha

    Gauche から wkb (well-known binary) を読み込めるライブラリを書きました - chaotic valkyrie
  • はてなブログ | 無料ブログを作成しよう

    酒を飲ませる国のこと 12月になってしまった。週に1度はブログを書こうと思って、6月からなんとなくペースを掴んでやってきたつもりだったのだけど、先月半ばに東京に帰ったタイミングでそんなのは一気に崩れてしまった。 東京で何をしていたかというと、主に酒を飲んでいたのではないかと…

    はてなブログ | 無料ブログを作成しよう
  • 紫ログ:Emacs上でGaucheのinfoを引く - livedoor Blog(ブログ)

    shiroさんに教わったのでメモっておきます ;;; from shiro (defun gauche-info-index (topic) (interactive (list (read-string (concat "Gauche help topic : ") (current-word)))) (switch-to-buffer-other-window (get-buffer-create "*info*")) (info "/usr/share/info/gauche-refe.info.gz") ;;(info "/usr/local/share/info/gauche-refe.info.gz") ;;うちは/usr/local/ (Info-index topic)) ;;(define-key global-map "\C-xH" 'gauche-info-index

  • 1