(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

Gauche

Slack で動く bot を作る(とりあえず発言だけ)

ということでさくっとやってみた。Slack というのは最近流行り(?)の HipChat like な Chat ツールで結構ほかのアプリケーション*1との連携がサクッと出来るのがいい感じぽい。 Slack では幾つかの API と WebHook を提供してくれているので、簡単に自動投稿…

Make10 してみた!

Make 10 してみよう! — a wandering wolf 「してみよう!」と言われたらするしかないと思ったのでちょっとやってみた。 ;; make10 (use srfi-1) (use gauche.collection) (use util.combinations) (define (atom? x) (and (not (pair? x)) (not (null? x)))…

ふたつのリストを混ぜる

リストを交互に分配 これ読みながら逆ってどうやんのって思ったのでちょっと書いた。 (define (twist-list li1 li2 :optional (result '())) (if (and (null? li1) (null? li2)) result (let ((li1-len (length li1)) (li2-len (length li2))) (if (> li1-le…

destructuring-bind ってステキですね

例えば Ruby ではこういうことが出来る。 a, b = [1, 2] a+b #=> 3 便利ですね。そして Clojure ではこういうことが出来る。 (def m {:a 1, :b 2, :c 3}) (let [{a :a, c :c} m] (+ a c)) ;=> 4 (def v [100, 200, 300]) (let [{a 0, b 2} v] (+ a b)) ;=> 4…

Hello, world?

CodeIQ に出した「hello, world × 3」の解説・解題 - Codeへの愛とCuriosity そういえば、これを読んでから書こうってずっと思っててやってなかったの思い出した。一応Gaucheで動きます。 (display (list->string (map integer->char `(,(*(*(+(*)(*)(*))(+(…

僕がGauche書いているときってこんな感じ

gifアニメが面白いのでちょっと調子に乗ってこういうの作ってみた。

MediaWikiのAPIをGaucheで叩くとなんか変。

変というか、思った通りの結果+αになってしまって困っている感じ。 Wikipediaのページをランダムに取得して、適当に呟くようにしようとしてMediaWikiのAPIを調べて以下のようなURLを作った。 http://ja.wikipedia.org/w/api.php?action=query&list=random&rn…

Project Euler頑張ってる。

Progress - Project Euler 最新の進捗状況です。あと1問(No.38)が解けたら1から40まで解けたことになる。 9割くらいGaucheで解きました。1,2問くらいExcelで解きました(ぇ解答内容はおおよそ、GitHubにあげてます。 ayato0211/project-euler 3ヶ月くらい前…

Gaucheで環境に定義されているシンボルの一覧を取得してみる?

えーと、軽いトラウマになっている環境の話。 というか、ちょっと書いてみたいプログラムがあって、調べて思い通りの結果が取得出来たのでメモメモ。Gaucheにおける「環境」とはモジュールのことになるらしい。モジュールはトップレベルの名前空間を規定する…

約数のわっ!

もとい、約数の和について。 Project Eulerで約数の和をそこそこ使うから書いていた。 (let1 x 12 (apply + (filter (^n (zero? (mod x n))) (iota x 1)))) 例えば、こんな感じのロジックを実装していた。 なんだけど、例えばこれを多用するような処理を書い…

眠いです。

昨日4時くらいまで(?)起きてたらしい(?)ので凄く眠いです。 なので、眠いって呟くコマンド作った(!?)。 #!/usr/local/bin/gosh (use net.twitter) (define *cred* (make <twitter-cred> :consumer-key "XXXXXXXXXXXXXXXX" :consumer-secret "XXXXXXXXXXXXXXXX" :access-tok</twitter-cred>…

あやぴーが今日の天気をお伝えします。

2013-08-06東京都 東京 の天気曇時々雨最低気温: --, 最高気温: 322013-08-06 11:47:56 via gosh_de_tweetこんな感じ元ネタというか、こんなものを走り書きしたのはこの発言を受けて。 「晴れルヤ」っていう天気予報をメールでお知らせしてくれるサービスが…

math.prime

【注意書き】よく考えたらHEADだからドキュメントとかもないのはある意味当然で、最新のリリースバージョンの0.9.3.3にはmath.primeは存在しないです。今日の段階(2013/07/35)のHEADの情報ということで。。Gaucheにそんなものがあったなんて知らなかった。。…

Project Euler 22を解く感じ

(add-load-path "." :relative) (use text.csv) (define *names-text* "./problem-22/names.txt") ;;適当なパスに放り込んだnames.txt (let1 num 0 (fold (lambda (x y) (+ (* (inc! num) (name->score x)) y)) 0 (sort (with-input-from-file *names-text* …

ピアスの公式を書いてみた。

クラムというゲームがあるそうで、それの発展として「砲門の問題(The Gunport Problem)」というのがあるらしい。 m×nの板上にドミノを置いたとき、1×1の大きさの「穴」が最大いくつ開けられるか。 ただしmもnも1より大きいものとする。 ※ドミノは1×2の大きさ…

僕と契約してLisperになってよ!-Gaucheの開発環境を整えよう-

というわけで、最近周りの人にLisp(といってもSchemeだしGaucheだけど)を布教する機会が多くなってきたのと、ちょっとセットアップの仕方教えてよ!って要望があったので、Gaucheで遊ぶまでの道のりを優しく丁寧に書いてみる。 (元も子もないことを言えば、…

数字を使わないで1+2をやってみる

タイトルだけみると、「またラムダ計算ですか?」って思われそうだけど今回はそうじゃない。 R5RSの仕様を使って、1とか2という"数字"を式の中に書くことなく「1+2」をやるんです。まぁ解説しながらやると面白くないので、いきなり結果をドンと書いてみる。 …

エラトステネスの篩を書いてみた

唐突に書きたくなったので、書いてみた。 (define (sieve n) (define (iter ls m) (if (not m) ls (iter (filter (^x (or (= m x) (not (zero? (mod x m))))) ls) (find (cut > <> m) ls)))) (iter (lrange 2 n) 2)) ;;test (sieve 100) 昔、自分が書いたも…

Rubyのtimesが羨ましかったので

この前、@alea12とぜろゆ嬢と3人で焼肉行ってた時に、Gaucheで10回Hello,worldを表示するのを見せたら、Rubyのコードでドヤ顔されて悔しかったのでRubyのtimesっぽい書き方ができないか試してみた話。見せたのは以下のコード。 (for-each (lambda (x) (print…

Gaucheの文字列結合

先日からちょっと、ちょこちょこ調べごとしてたのでメモメモ。 string-append 普通に文字列の結合をしてくれる。 (string-append "/home" "/ayato_p" "/text.txt") string-join URLとかCSVとか作るのに便利そう。 (string-join (list "home" "ayato_p" "text…

TODO管理用のコマンドをざっくり書いてみた

昨日仕事していて、パソコンで使うTODOアプリがあんまり便利なのないなーって思ったので、適当なの作った。 ちなみにXubuntuで今はお仕事の資料を書いている。LibreOfficeそこそこ使えるじゃん。 要件 コマンドでTODOを追加できる シンプルにテキストで管理…

Lispっぽく素数判定する?

SICPを読んでいても出てくるprime?という素数判定のための手続き。思い出したように、これって短く書けるんじゃない?って思ったのでメモ書き。 SICPに出てくるのは確かこんな感じ。 (define (prime? n) (define (smallest-divisor n) (find-divisor n 2)) (…

囚人のジレンマ

鳥のアイコンの人が、昨晩呟いてたのをGaucheならどう書くかなーって少しだけ考えたので、そのままさくっと載せてみる。 このコードどうしたらもっと見通し良くなるだろう URL2013-06-26 01:08:14 via webまず、囚人のジレンマとは 囚人のジレンマ(しゅうじ…

lrangeというのを使ってみた。

前回の記事書いたら、shiroさんからコメントでlrangeというのを教えてもらったので使ってみた。 Function: lrange start :optional end step startからstepづつ増加し、endを越える直前までの遅延数列を 返します。stepのデフォルトは1、endのデフォルトは無…

Scheme可愛いよって話をしていたら、「括弧が多い」って言われたので

今日は昼間、会社の同僚と久しぶりに会って話していました。そして、話しているうちにSchemeかわいいという話を僕がしていて、実際にFizzBuzzのコードを書いてみせて、その後Project-Eulerの問題を解いてみせたんですが、「でも、括弧が多いし…」と言われた…

【バグを踏んでたらしい】let-argsを使ってみたら、よく分からない挙動をした。。。

2013/06/23 追記 ということで、報告から12時間しないうちに直されてしまいました。 [Scheme][Gauche]let-argsを使ってみたら、よく分からない挙動をした。。。 URL2013-06-23 07:19:10 via Hatena @ayato_p いや、そりゃ Gauche のバグっぽいですね。2013-0…