Skip to content

Instantly share code, notes, and snippets.

View chuntaro's full-sized avatar

chuntaro

View GitHub Profile
@chuntaro
chuntaro / fibs.el
Last active February 12, 2021 07:47
Emacs Lisp で実装する、9つのフィボナッチ関数
;;; -*- lexical-binding: t; -*-
;; Emacs Lisp で実装する、9つのフィボナッチ関数
;; 内訳は以下の通り
;;
;; 再帰呼び出し系
;; fib-tail-recursion
;; fib-double-recursion
;;
@chuntaro
chuntaro / test-multiple-values.c
Last active December 15, 2021 09:41
C で多値を返す関数の実験コード
//
// C で多値を返す関数の実験コード
//
// Lisp -> C へのトランスレータを実装する時に多値をどう実装すればいいかを確認する実験コード
//
// 基本的に values() の呼び出しは values1 が呼ばれる
// 多値が必要な時は multiple-value-bind の第2引数で呼ばれた時のみで、
// レキシカルに判断出来るので、この方法で問題無い(はず…)
# Use colon separators.
xterm-24bit|xterm with 24-bit direct color mode,
use=xterm-256color,
setb24=\E[48:2:%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%dm,
setf24=\E[38:2:%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%dm,
# Use semicolon separators.
xterm-24bits|xterm with 24-bit direct color mode,
use=xterm-256color,
setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
;;; eaw.el --- Fix east asian ambiguous width issue for emacs
;; Author: HAMANO Tsukasa <[email protected]>
;; URL: https://github.com/hamano/locale-eaw
;; Version: 12
;; MIT License
;;; Code:
(defconst eaw-east-asian-ambiguous
[#x00A1 ; (1) Po INVERTED EXCLAMATION MARK
@chuntaro
chuntaro / optional-params.c
Created March 7, 2023 10:40
C 言語で型安全・個数安全なオプショナル引数を実現する
#include <stdio.h>
//----------------------------------------------------------------
#define INDEX_RSEQ() 4, 3, 2, 1, 0
#define VA_ARGS_SIZE_IMPL(ARG1, ARG2, ARG3, ARG4, N, ...) N
#define VA_ARGS_SIZE_AUX(...) VA_ARGS_SIZE_IMPL(__VA_ARGS__)
#define VA_ARGS_SIZE(...) VA_ARGS_SIZE_AUX(__VA_ARGS__, INDEX_RSEQ())
#define CONCATENATE_AUX(x, y) x##y
#define CONCATENATE(x, y) CONCATENATE_AUX(x, y)
@chuntaro
chuntaro / test-with-cache.el
Created July 9, 2023 11:00
Emacs で with-cache を実装してみた
;;; -*- lexical-binding: t; -*-
;; 括弧への異常な愛情 (https://www.slideshare.net/m2ym/common-lisp-9838434)
;; からの引用
(require 'cl-lib)
(defmacro with-cache (key &rest body)
(declare (indent 1))
(cl-once-only (key)