Common Lispの総称関数みたいな複数レシーバ (multiple dispatching) のOOP言語(Lispでない)を考えるとなにかならないかなあ…。
CLOSのmultiple dispatchはこう
;; メソッド定義
| ;; (ql:quickload '(:alexandria :split-sequence :cl-opengl :cl-glfw3)) | |
| (defpackage :lispteatime-3d-cubes | |
| (:use :cl | |
| :alexandria) | |
| (:export :model | |
| :model-vertices | |
| :model-uv-mappings | |
| :model-texture | |
| :parse-obj |
| package main | |
| import ( | |
| "fmt" | |
| "os" | |
| "unicode" | |
| ) | |
| type TokenType int |
| (defun -& (ak bk k) | |
| "引き算 (継続版)。 | |
| 値を得る継続 (ak, bk) から得た値で引き算して、それを次の継続に渡す" | |
| (funcall (funcall (lambda (a) | |
| (lambda (b) | |
| (funcall k (- a b)))) | |
| (funcall ak (lambda (v) v))) | |
| (funcall bk (lambda (v) v)))) | |
| (defun +& (ak bk k) |
| EMPTY = 0 | |
| class Stack(): | |
| def __init__(self): | |
| self.stack = [] | |
| def push(self, x): | |
| self.stack.append(x) | |
| def pop(self): |
| // test code for mimium: https://github.com/mimium-org/mimium | |
| // wav file should be: | |
| // - 48kHz sampling rate | |
| // - monoraul (1ch) | |
| sample_rate = 48000 | |
| pi = 3.141592 | |
| // kick | |
| kick_path = "./kick.wav" |
| #!/bin/sh | |
| #|-*- mode:lisp -*-|# | |
| #| | |
| exec ros -Q -- $0 "$@" | |
| |# | |
| (progn ;;init forms | |
| (ros:ensure-asdf) | |
| #+quicklisp(ql:quickload '(:jonathan :dexador) :silent t) | |
| ) |
| (defpackage #:test | |
| (:use #:cl) | |
| (:import-from #:cl-glfw3 | |
| #:with-init-window | |
| #:def-key-callback | |
| #:get-proc-address | |
| #:set-key-callback | |
| #:set-window-should-close | |
| #:window-should-close-p | |
| #:swap-buffers |