kikkiiのブログ

ひきこもり

Common Lisp

コメントをしまうマクロ

common lispで遊んでいるとき、型があった方が流れがわかりやすくなるから、いつの間にか、Haskellの記法を真似て関数の上にコメントとして書いていたりする。 ;; Number -> Number -> Number (defun add-xy (x y) (+ x y)) 「Numberは数値の型で、これはNum…

プログラミングわからない

私はこのくらいプログラミングがわからない。 (loop :while (not (= 0 (random 1000))) :do (print 'プログラミングわからない) 外れるたびに1回「プログラミングわからない」と吐き出さないとならない、当たる確率が1000分の1のくじ引きを当たるまでやり続…

(ql:quickload :let-plus)

Common Lispが気になる。いつか「自分Common Lisp」をつくりたい。let-plusは便利だと思った。 let-plusの紹介 — #:g1 効率がいいとか悪いとかそういうのはわからないが、この分配束縛系構文ライブラリを使ったら、ローカール変数やローカール関数わかりやす…

linesとsplit-sequenceで文字列を分割

Haskellでは、文字列の中の \n は改行。こういうことをすぐ忘れてしまう。 Prelude> :t lines lines :: String -> [String] -- linesは、改行のところで文字列を分割してリストにする関数 Prelude> lines "aa\nbb\ncc\ndd\nee\nff" ["aa","bb","cc","dd","ee…

(ql:quickload :arrow-macros :silent t)

Common Lispのライブラリをインストールするとき (ql:quickload :ライブラリ名) とすると To load "ライブラリ名": Load 1 ASDF system: alexandria ; Loading "ライブラリ名" とかって吐くので、それを黙らせるために (ql:quickload :ライブラリ名 :silent …

cl-replを使うためにお魚(fish)でパスしたという日記

qiita.com 上の記事を見て、よさそうだと思ったので、使ってみたくなり、 ros install koji-kojiro/cl-repl と端末で打ってみた。roswellは以前に入れておいたので、これは上手くいった。で、記事にあるように、 ros repl としてみた。「script "repl" does …

Common Lispで二分木・白黒木

昨日はHaskellで二分探索木の勉強をした。 kikkii.hatenablog.com Common Lispでもそれと同じようなことをしている人を見つけた。 qiita.com ありがたい。浅くしかコードを読んでいないが、コピー・アンド・ペーストして実行することで、溜飲を下げる。 (ql:…

クイックソート2

前にブログに貼り付けたクイックソートのコードをほんの少しだけ読みやすくしたい。内包表記の部分を書き換える。まずはhaskell。 -- 前 quicksort :: (Ord a) => [a] -> [a] quicksort [] = [] quicksort (x:xs) = let smallerSorted = quicksort [a | a <-…

クイックソート

HaskellとCommon Lispの勉強をコッソリ少しずつ進めている。Haskellでクイックソートが簡単に書けるのを知って嬉しい。このサイトのコードを貼り付ける。 -- haskell quicksort :: (Ord a) => [a] -> [a] quicksort [] = [] quicksort (x:xs) = let smallerS…