blob: cf3bc76ecb0ebf477100572c0454d8e36bf0a61a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
(in-package :monkey)
(defun concat-symbols (sym1 sym2)
(intern (format nil "~a-~a" (symbol-name sym1) (symbol-name sym2))))
(eval-when (:compile-toplevel :load-toplevel :execute)
(defmacro eval-always (&body body)
`(eval-when (:compile-toplevel :load-toplevel :execute)
,@body)))
(defun make-string-view (source start end)
(make-array (- end start) :element-type 'character
:displaced-to source
:displaced-index-offset start))
(defun read-file-contents (file-name)
(let* ((len 0)
(contents
(with-output-to-string (out)
(with-open-file (in file-name :external-format :utf-8)
(loop :with buffer := (make-array 8192 :element-type 'character)
:for n := (read-sequence buffer in)
:while (< 0 n)
:do (incf len n)
(write-sequence buffer out :start 0 :end n))))))
(values contents len)))
|