Skip to content

Instantly share code, notes, and snippets.

@haruo-wakakusa
haruo-wakakusa / polygon1.kn
Last active October 22, 2018 01:36
Kuin言語における多角形描画プログラム
; polygon1.kn
; 正多角形の描画
const RADIUS: float :: 300.0
const CENTER: float :: 400.0
var wndMain: wnd@Wnd
var drawMain: wnd@Draw
func drawPolygon(n: int)
@haruo-wakakusa
haruo-wakakusa / kuin_issue_20181020.kn
Created October 20, 2018 08:49
Kuin言語不具合報告用コード
const WINDOW_WIDTH: float :: 600.0
const WINDOW_HEIGHT: float :: 800.0
; メインコード
var wndMain: wnd@Wnd
var drawMain: wnd@Draw
func main()
do @wndMain :: wnd@makeWnd(
@haruo-wakakusa
haruo-wakakusa / array1.hs
Created October 12, 2018 20:50
Haskell / 16分木を用いた配列の実装
import Data.Bits
data Node =
Branch { b0 :: Node, b1 :: Node, b2 :: Node, b3 :: Node,
  b4 :: Node, b5 :: Node, b6 :: Node, b7 :: Node,
   b8 :: Node, b9 :: Node, ba :: Node, bb :: Node,
   bc :: Node, bd :: Node, be :: Node, bf :: Node }
| Leaf Int
| Nil
@haruo-wakakusa
haruo-wakakusa / ishimiya_problem.kn
Last active September 21, 2018 18:01
石宮鏡太郎さんの問題に対するオブジェクト指向を用いた回答(Kuin)
; 石宮鏡太郎さんの問題に対するオブジェクト指向を用いた回答
; プログラミングでひとつ問題を出します。
;
; if(a<b)if(c==0)method(e); else method(f); else if(d==0)method(e); else method(f);
;
; をあなたはどう簡潔に書きますか?
; 言語はCを想定していますが、別にどの言語で答えてもいいです。
;
; みなさまのスタイルを期待しております。
@haruo-wakakusa
haruo-wakakusa / bseqkuina.kn
Last active September 17, 2018 13:48
えびすてさんの問題を解くプログラム
; bseqkuina.kn
; B(?) sequence for 917
;
func make917(n: int): []int
if(n = 1)
ret[1, 7, 9]
end if
var sml: []int :: @make917(n - 1)
var res: []int :: #[(^sml * 3)]int
@haruo-wakakusa
haruo-wakakusa / sharp-a.cl
Created September 14, 2018 14:47
Common Lisp reader macro of an abbreviation of aref
; sharp-a.cl
; [reader-macro #a]
; #a is an abbreviation of aref.
;
; [syntax]
; #a<symbol>(.<integer>)+ => (aref <symbol> <integer> ... <integer>)
;
; [example]
; (defvar a (make-array 5))
@haruo-wakakusa
haruo-wakakusa / reader-macro.cl
Last active September 13, 2018 14:00
Common Lispリーダーマクロのセルフホスティング
(defun whitespace-p (char)
(find char '(#\tab #\newline #\linefeed #\page #\return #\space)))
(defun terminating-character-p (char)
(find char '(#\" #\' #\( #\) #\, #\; #\`)))
(defvar *alternative-dot* (gensym "DOT-"))
(defun raw-reversed-left-parenthesis-reader (stream char)
"Reads the right strings of '('
but single dot tokens '.' will be converted into *alternative-dot*
@haruo-wakakusa
haruo-wakakusa / CLHS-2.2-ReaderAlgorithm.md
Last active September 8, 2018 09:36
HyperSpec「2.2 Reader Algorithm」の私訳

注意書き

この訳はただのメモ書きであり、原著作者に許可を得て公開しているものではありません。

2.2節 リーダーアルゴリズム

この節では入力文字ストリームからオブジェクトをパースするためのLispリーダーで使われるアルゴリズムを記述する。 Lispリーダーがマクロ文字をどのように処理するかということ含めて解説する。

トークンを扱う時、リーダーの基本的な機能はシンボル表現と数値表現を見分けることである。トークンが集約された時、

@haruo-wakakusa
haruo-wakakusa / runnable.kn
Last active September 4, 2018 14:15
シングルトンで実行させる非同期スレッドクラス
; runnable.kn
;
{非推奨の組み込み関数}
+func[d0000.knd, _makeThread, _make_instance]makeThread(
|me2: task@Thread, threadFunc: func<()>): task@Thread
end func
+class Runnable()
; Runnableクラスは任意の名前のメソッドを
@haruo-wakakusa
haruo-wakakusa / itp2_1_a.hs
Created July 29, 2018 03:24
AOJ ITP2_1_A : Dynamic Arrays and List - Vector (slow-version)
import Control.Monad
import Control.Applicative
import Data.List
data Operation a = PushBack a | RandomAccess a | PopBack
showOp :: Operation Int -> String
showOp op =
case op of
PushBack x -> "PushBack " ++ (show x)