GNU Guileで.envを読み込む

#!/usr/bin/env guile -s !# (use-modules (ice-9 rdelim)) (define (dotenv-apply-from-file filename) (map (lambda (env-val) (apply setenv env-val)) (map (lambda (line) (let ((env-val (string-split line #\=))) `(,(car env-val) ,(car (cdr env-val))))) (call-with-input-file filename (lambda (dotenv-file) (let loop ((ls1 '()) (line (read-line dotenv-file))) (if (eof-object? line) (begin (close-input-port dotenv-file) (reverse ls1)) (loop (cons line ls1) (read-line dotenv-file))))))))) (dotenv-apply-from-file "/ng/symdon/public/.env")...

 · 1 min · しむどん三度無視

GNU Guileでファイル及びディレクトリ操作

ファイルシステムに関連するファイル及びディレクトリの操作はftwモジュールに実装されている。 ftwモジュールをインポートしておく。 (use-modules (ice-9 match) (ice-9 ftw)) ディレクトリ作成 mk...

 · 1 min · しむどん三度無視

GNU Guileでカレントワーキングディレクトリを変更する

カレントワーキングディレクトリの変更 chdir関数でカレントワーキングディレクトリを変更する。 [email protected](guile-user) [2]> (chdir "/ng/symdon/pages/posts/1610659681") カレントワーキングディレクトリの取得 現在のカレントワーキン...

 · 1 min · しむどん三度無視

GNU Guileでファイルを読み書きする

SchemeではファイルへのIOをファイル記述子を直接扱うのではなくポートというもので扱う。 ポートは入力や出力を行うためのもの。 https://www.gnu.org/software/guile/manual/html_node/Ports.html ファイルに書き込み ファイルを作...

 · 1 min · しむどん三度無視

macOSにslibをインストールしてGNU Guileから利用できるようにする

cvsがなかったのでcvsをインストールした。 $ brew install cvs cvsを一番最後に使ったのはいつだったろうか…。もはや覚えていない。 https://savannah.gnu.org/cvs/?group=slib ソースコードをチェックアウトする。 も...

 · 1 min · しむどん三度無視

GNU Guileで環境変数を取得/設定する

取得 環境変数を取得するにはgetenv関数を用いる。 [email protected](guile-user) [1]> (getenv "LANG") $2 = "ja_JP.UTF-8" 設定 環境変数を取得するにはsetenv関数を用いる。 [email protected](guile-user) [1]> (setenv "FOO" "BAR") [email protected](guile-user) [1]> (getenv "FOO") $3 = "BAR"...

 · 1 min · しむどん三度無視

GNU Guileとguiler

EmacsでGNU Guileを使いたければM-x guilerとしてみよう。 Current directory is /ng GNU Guile 3.0.4 Copyright (C) 1995-2020 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c'...

 · 1 min · しむどん三度無視

Common Lisp(SBCL)でのソケットプログラミング

Common LispにはBSDソケットプログラミングの仕様は決められていない。 そのためCommon Lispの処理系がそれぞれにソケットプログラミングのAPIを実装している...

 · 2 min · しむどん三度無視

Common Lispの環境構築

今回はSBCLを使うとこにする。 OSはmacOS、SBCLのインストールには手軽なのでHomebrewを使うことにした。 $ brew install sbcl SBCLのインストール Emacs...

 · 1 min · しむどん三度無視