Skip to content

Instantly share code, notes, and snippets.


Eitaro Fukamachi fukamachi

Block or report user

Report or block fukamachi

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View chasen.rb
require "formula"
class Chasen < Formula
homepage ""
url ""
sha256 "fd1a7afd73ed14e18b0fe82965c00a6baae383070360a4220fde01338611416a"
head "git://"
def install
fukamachi /
Last active Aug 15, 2019
Common Lisp Scripting with Roswell (Draft)

Common Lisp Scripting with Roswell

"Roswell Script" is implementation-independent Common Lisp scripting program which uses Roswell. Although Roswell itself is a unified interface to Common Lisp implementations, it also encourages writing scripts with it.

To start writing it, run ros init in your terminal:

$ ros init
Usage: ros init [template] name [options...]
fukamachi /
Last active Jun 9, 2019
Using Travis CI with Roswell

Using Travis CI with Roswell

Travis CI is the most prevalent cloud CI service. Though it has no Common Lisp support officially, by using Roswell, you can test your Common Lisp product with a few efforts.

WARNING: This document is based on Roswell v0.0.3.42 (not released yet) or above.

Enabling Travis CI

To use Travis CI, you must sign up and enable testing for your repository at your profile page.

View quicklisp-badges.markdown

Quicklisp badge now provides project badges for Quicklisp projects. It shows Quicklisp dist version when the project was updated last.

Once the project owner adds this badge to their README file, it will inform the project is ready for Quicklisp and its documentation is available on


It's available, however it was just added in this morning at whim and it may still have issues. Please try it and tell @nitro_idiot if you encountered any issues.

fukamachi / which.lisp
Created Jul 4, 2015
which -- check if a command is available on the working environment
View which.lisp
(defun which (command)
(let* ((result (with-output-to-string (s)
(uiop:run-program `("which" ,command)
:output s
:error-output *error-output*)))
(position-if (lambda (char)
(or (char= char #\Newline)
(char= char #\Return)))
fukamachi / clhs.ros
Last active Jan 21, 2018
A Roswell script for opening HyperSpec page describing a given symbol in the default browser.
View clhs.ros
#|-*- mode:lisp -*-|#
exec ros -Q -- $0 "$@"
A Roswell script to open the HyperSpec page of a specified symbol in the default browser.
View 00-error.log
$ ros starter.ros
While evaluating the form starting at line 127, column 0
of #P"/usr/local/share/common-lisp/source/roswell/init.lisp":
"main thread" RUNNING
:UTF-8 c-string decoding error:
the octet sequence #(200 23) cannot be decoded.
Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1002D77563}>
fukamachi / Dockerfile
Created Jun 16, 2015
Dockerfile for building an image of Ubuntu with Roswell
View Dockerfile
FROM ubuntu
MAINTAINER Eitaro Fukamachi <>
LABEL Description="Ubuntu with Roswell, Common Lisp implementation manager"
RUN apt-get update && apt-get install -y autotools-dev automake libcurl4-gnutls-dev curl make
RUN curl -SL \
| tar -xzC /tmp/ \
&& cd /tmp/roswell-release \
&& sh bootstrap \
fukamachi / 00-vector-case.lisp
Last active Aug 29, 2015
A fast sequence matching macro
View 00-vector-case.lisp
(ql:quickload :alexandria)
(import '(alexandria:ensure-cons alexandria:once-only))
(defmacro vector-case (vec-and-options &body cases)
(destructuring-bind (vec &key (start 0) end case-insensitive)
(ensure-cons vec-and-options)
(let ((otherwise (gensym "otherwise")))
(labels ((case-candidates (el)
(if (and case-insensitive
(characterp el))
; $ sbcl --load --eval '(sb-ext:save-lisp-and-die "a.out" :toplevel #'\''main :executable t)' && time ( echo 100000000 | ./a.out > /dev/null )
; ( echo 100000000 | ./a.out > /dev/null; ) 10.75s user 0.15s system 99% cpu 10.931 total
; $ sbcl --version
; SBCL 1.2.6
(defun main ()
(declare (optimize (speed 3) (debug 0) (safety 0) (compilation-speed 0)))
(let* ((n (1+ (the fixnum (read))))
(is-prime (make-array n :element-type 'boolean :initial-element t)))
You can’t perform that action at this time.