<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-37655209</id><updated>2026-10-10T11:48:01.533+02:00</updated><category term="Scheme"/><category term="Sagittarius"/><category term="etc"/><category term="program"/><category term="working holiday"/><category term="Netherlands"/><category term="c++"/><category term="language"/><category term="travel"/><category term="computer"/><category term="cook"/><category term="music"/><category term="OS Dev"/><category term="training"/><category term="lisp"/><category term="study"/><title type='text'>時の羅針盤＠blog</title><subtitle type='html'>オランダの生活、自身が行っているSagittarius Schemeの開発日誌、&lt;br&gt;&#xa;その他雑多なことをつづってます。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://compassoftime.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1134</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-37655209.post-4823197077763975281</id><published>2026-03-06T17:18:00.002+01:00</published><updated>2026-03-06T17:18:54.746+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>Composable continuation (3)</title><summary type="text">Dynamic winder is always a headache. It doesn&#39;t matter in which situation.
For the composable continuation, it&#39;s not an exception at all.
For example the below script
(define saved #f)
(define count 0)
(call/prompt
 (lambda ()
   (dynamic-wind
       (lambda () (display &quot;pre1\n&quot;))
       (lambda ()
         (call/prompt
          (lambda ()
            (dynamic-wind
                (lambda () (</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2026/03/composable-continuation-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/4823197077763975281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/4823197077763975281'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2026/03/composable-continuation-3.html' title='Composable continuation (3)'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-6600857143626078281</id><published>2026-02-10T14:25:00.000+01:00</published><updated>2026-02-10T14:25:01.391+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>Composable continuation (2)</title><summary type="text">I&#39;ve written how it works (as my memo), so now it&#39;s time to write what
I&#39;ve done (as my memo, again).
Capture composable continuation
Capturing a composable continuation is basically the same as capturing
a full continuation. This means, we copy the entire stack frame into
the heap area. In theory, we can copy up until the target prompt,
so that we don&#39;t have to allocate unnecessary heap. Though,</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2026/02/composable-continuation-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6600857143626078281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6600857143626078281'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2026/02/composable-continuation-2.html' title='Composable continuation (2)'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-8801674103770873087</id><published>2026-01-28T13:02:00.002+01:00</published><updated>2026-01-28T13:02:35.144+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>Composable continuation (1)</title><summary type="text">After 2 weeks of fighting, I&#39;ve finished implementing composable
continuation.  This is my memo of how I understand composable
continuation and what I&#39;ve done to implement it.
How it works
If I google it, I can find a lot of (maybe not so many) articles
and/or papers regarding composable continuation. All those papers are,
of course, very abstracted, means it wasn&#39;t intuitive for me. (I&#39;m not
</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2026/01/composable-continuation-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/8801674103770873087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/8801674103770873087'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2026/01/composable-continuation-1.html' title='Composable continuation (1)'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-3163412194987052156</id><published>2026-01-21T15:58:00.002+01:00</published><updated>2026-01-21T15:58:23.865+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>Continuation prompt</title><summary type="text">Since long time ago, I was thinking if Sagittarius can have some nice
async/await equivalent things. I&#39;m using Java/Kotlin at my work,
occasionally TypeScript, they, execpt Java, have nice async/await
thing. So, I asked my new shiny friends, Copilot or ChatGPT, if it&#39;s
possible to implement it with continuation. And the answer was yes,
also it&#39;d be cleaner if I use delimited continuation.
Now, I </summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2026/01/continuation-prompt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/3163412194987052156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/3163412194987052156'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2026/01/continuation-prompt.html' title='Continuation prompt'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-886157824914052890</id><published>2025-01-27T14:54:00.002+01:00</published><updated>2025-01-27T14:54:51.398+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><title type='text'>Memo: Socket selector on Windows</title><summary type="text">
Sagittarius has (net socket) library which defines socket selector. A socket selector takes arbitary number of sockets and waits until one or more of the given sockets are readable. The concept was there quit a long time, however it wasn&#39;t really working on Windows unfortunately. Now, I put some effort to make it work as I expected.


  The requirement of the socket selector is below:
  
    </summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2025/01/memo-socket-selector-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/886157824914052890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/886157824914052890'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2025/01/memo-socket-selector-on-windows.html' title='Memo: Socket selector on Windows'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-6645473082989560911</id><published>2024-05-27T11:42:00.005+02:00</published><updated>2024-05-27T11:42:36.221+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>cond-expand enchancement</title><summary type="text">When I&#39;m writing a library or tools, I usually write them working on the current release version of Sagittarius, unless R6RS portable one. However, I often want to use the development branch version of the features as well, especially with the new procedures.Since R7RS, cond-expand has the library clause, which checks if the library specified in the clause exists or not. If you are handling </summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2024/05/cond-expand-enchancement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6645473082989560911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6645473082989560911'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2024/05/cond-expand-enchancement.html' title='cond-expand enchancement'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-7838520440904176785</id><published>2023-10-09T14:25:00.001+02:00</published><updated>2023-10-09T14:25:16.801+02:00</updated><title type='text'>OAS stub</title><summary type="text">ここ数ヶ月Kotlinを書いていたのだが、なんとなく形になったしちょっと紹介記事を書こうかなぁと。Swagger/OpenAPI Specificationは多分誰でも知っているだろう。Microserviceな流れになっていた前職で10を超えるバックエンドサービスに接続する必要があったのだが、毎回stubを書くのは馬鹿らしいと思い提供されているAPI定義(たいていSwaggerかOAS)を読み込んだらリクエストの検査からレスポンスの生成をやってくれないかなぁと思って作ったものの焼き増しがOAS stubになる。実際にこのアプリはかなり便利で、恐ろしく時間の短縮が可能だった*1ので多分OSSにしても需要があるんじゃないかなぁと。基本的な使用方法は今のところ二つ、Spring Bootアプリとしてスタンドアローンにするか、テスト用フレームワークとして使うか。スタンドアローンアプリスタンド</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2023/10/oas-stub.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/7838520440904176785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/7838520440904176785'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2023/10/oas-stub.html' title='OAS stub'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-842497572603735828</id><published>2023-10-02T15:16:00.005+02:00</published><updated>2023-10-02T15:22:36.903+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="etc"/><category scheme="http://www.blogger.com/atom/ns#" term="Netherlands"/><title type='text'>転職して一ヶ月で異動、または履歴書に前職の経歴を書く功罪</title><summary type="text">転職して一ヶ月で異動になった話。ちょっと個人的にツボったので後で振り返るように書いておく。2023年9月から銀行Iで働くことになった。前職である銀行Rではオランダで最も使われているペイメントスキームの一つであるiDealのメンテナンス及びメジャーバージョンアップに多大に貢献した。当然ではあるが、履歴書にそのことを載せていた。ちなみに、銀行Iはオランダ最大手の銀行かつ銀行Rの競合他社であるが、iDealのメジャーバージョンアップ(以降iDeal 2.0)において銀行Rの後塵を配していた。自慢になるが、銀行RがiDeal 2.0において他の追随を許さない勢いで成功を収めたのは、僕の功績が大きい*1。ちなみに銀行Iに転職する前の面接では一応そのことを仄めかしていたが、大きくは取り上げなかった。個人的にiDeal 2.0に関わりたくなかったし*2。転職直後の月曜日に別のチームのマネージャから</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2023/10/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/842497572603735828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/842497572603735828'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2023/10/blog-post.html' title='転職して一ヶ月で異動、または履歴書に前職の経歴を書く功罪'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-6026433175403965450</id><published>2023-06-14T09:44:00.002+02:00</published><updated>2023-06-14T09:44:33.230+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>英語の勉強のお供に？</title><summary type="text">同僚のスクリーンセーバが英単語とその意味を表示するやつなのをみて、こういうのあると便利かなぁと思い始めたのでなんとなく似た感じのものを作ってみた。まぁそこまで似ているというほどでもないのだが、起動するとコンソールに単語の意味と例文をなんちゃってカード形式で表示するというもの。ちなみに単語はUrban Dictionaryの非公式APIを使って取得していたりするので、このスクリプトがある日突然使えなくなっても泣かないようにしないといけない。Gistに載せたのはコピペしたものなので、色がついてたり太字になってたり下線がついてたりするのが見えないのが残念。実際にどのように見えるのかは実行すればわかるということで。

別段特筆すべきこともないのだが、これを書くために使ったライブラリ達(当然だが全部Sagittariusに付属している)(net http-client): モダン(なつもり)な</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2023/06/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6026433175403965450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6026433175403965450'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2023/06/blog-post.html' title='英語の勉強のお供に？'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-3731688348977636620</id><published>2023-05-04T20:57:00.000+02:00</published><updated>2023-05-04T20:57:04.893+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>Remote debugger(ish)</title><summary type="text">In the previous post, I&#39;ve mentioned that I needed to collect all threads
to see which one is hanging. After implementing it, I&#39;ve also noticed that
all threads were hanging. So I&#39;ve decided to implement a better remote
debugger(ish).
CAVEAT
The functions and interface are experimental, so it might get changed
in the future.
Suppose we have this script:
(import (rnrs)
        (srfi :1)
        (</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2023/05/remote-debuggerish.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/3731688348977636620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/3731688348977636620'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2023/05/remote-debuggerish.html' title='Remote debugger(ish)'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-5330058039097854673</id><published>2023-04-26T11:09:00.003+02:00</published><updated>2023-04-26T11:09:32.500+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>Thread monitoring</title><summary type="text">When I write multi thread programs, it&#39;s always a trouble to debug whenever
a thread hangs. That&#39;s because:

You don&#39;t see what&#39;s going on.
I don&#39;t put logging when I write a library and I don&#39;t usually use raw
thread.
The problem is gone away if I put a debug print
And/or it happens only once in a hundred

So, I started thinking that if I want to resolve this, it has to be a
fundamental solution</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2023/04/thread-monitoring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/5330058039097854673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/5330058039097854673'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2023/04/thread-monitoring.html' title='Thread monitoring'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-6168693772548281984</id><published>2023-01-03T10:42:00.001+01:00</published><updated>2023-01-03T10:43:12.019+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>New crypto library</title><summary type="text">Last year, I&#39;ve written a portable cryptographic library
Springkussen. And then
I&#39;ve also noticed that (crypto) and (math) libraries are not really
well designed. For example, a cipher object must support both encryption
and signing operations which can only be applied to RSA operations. So, I decided to
rewrite Sagittarius&#39; cryptograpihc library and now I can show what it looks
like.
Library </summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2023/01/new-crypto-library.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6168693772548281984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6168693772548281984'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2023/01/new-crypto-library.html' title='New crypto library'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-8031325797271159408</id><published>2022-06-20T15:03:00.003+02:00</published><updated>2022-06-20T15:03:13.326+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>AMQP</title><summary type="text">
Sagittarius supports
AMQP,
Advanced Message Queue Protocol, since probably 0.6.x, I don&#39;t recall
which version, to be honest. The reason I wanted to support this was because
I was using QM, I think IBM MQ, at that moment at my work and wanted to send
a message from a command-line, instead of using a Web browser. Unfortunately,
the version of MQ was too old and didn&#39;t support AMQP yet. So, I </summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2022/06/amqp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/8031325797271159408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/8031325797271159408'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2022/06/amqp.html' title='AMQP'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-8833580830764960822</id><published>2022-05-19T22:31:00.000+02:00</published><updated>2022-05-19T22:31:09.908+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>Markdown support</title><summary type="text">On Sagittarius, I was, well still am, using scribble, which the parser is
ported from Chibi Scheme, to write the document. Recently, though it&#39;s
been already a couple of years, I&#39;ve been thinking that using one of the
documentation formats might be better so that users can read better on
the repository if they want to use the latest version.
So, I&#39;ve updated (text markdown) library to support </summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2022/05/markdown-support.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/8833580830764960822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/8833580830764960822'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2022/05/markdown-support.html' title='Markdown support'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-473322698036802032</id><published>2021-11-26T11:24:00.003+01:00</published><updated>2021-11-26T11:24:46.204+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>JWT と愉快な仲間たち</title><summary type="text">多分2017年くらいにやるかと思って放置していた JWT 周りのサポートをようやく重い腰をあげて完了した。一応、現時点て RFC になってるものは全部入れたはず(EdDSA とか ES256K とか)。ドラフトの ECDH-1PU はそのうちファイナルになったらサポートするかもしれない。こんな感じで使える。(import (rnrs)
        (rfc jwt)
        (rfc jwk)
        (rfc jwe)
        (rfc jws)
        (rfc uuid)
        (crypto)
        (srfi :19)
        (math ec) ;; for ec-parameters
        (sagittarius combinators))

(define keypair (</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2021/11/jwt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/473322698036802032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/473322698036802032'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2021/11/jwt.html' title='JWT と愉快な仲間たち'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-7010900039400477310</id><published>2021-09-06T11:21:00.003+02:00</published><updated>2022-06-20T15:06:30.439+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>Problem of future-map</title><summary type="text">I&#39;ve introduced some future related procedures, in the context of concurrency, not the future in general as I&#39;m not a prophet. The procedures will be available after the next release, version 0.9.8, which I&#39;m planning to release very soon.When I&#39;m testing or writing scripts with future-map, one of the future related procedures, I&#39;ve noticed there&#39;s a thread blocking issue. The future-map </summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2021/09/problem-of-future-map.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/7010900039400477310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/7010900039400477310'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2021/09/problem-of-future-map.html' title='Problem of future-map'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-7379242068812884228</id><published>2021-06-25T15:28:00.002+02:00</published><updated>2021-06-25T15:28:34.329+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>HTTP クライアントライブラリ</title><summary type="text">前回のポストから二ヶ月近く空いてしまった。要るもの追加してたら時間がかかったのと、まぁ家庭の事情というやつなので仕方ない(と自分に言い訳)ここ数年、PostMan みたいなので REST API を叩くみたいなことをしていたのだが、それ以前は Scheme で書く元気があったのに急にやらなくなったなぁという気がしていた。原因をなんとなく考えて、多分 Sagittarius に付属している HTTP 周りのライブラリが貧弱かつイマイチ使い勝手が悪いというのが原因だと結論づけた。使い勝手に関しては完全に自分の主観なので、現状の素朴な実装の方がいい場合もあるかもしれないが、本業では Apache Http Client とか Spring Framework の WebClient とか使っているので真面目なアプリ/スクリプトを書く際はその辺の使用感が欲しいというのはある。ということで作った。</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2021/06/http.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/7379242068812884228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/7379242068812884228'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2021/06/http.html' title='HTTP クライアントライブラリ'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-1022847318765160911</id><published>2021-05-06T15:18:00.004+02:00</published><updated>2021-05-06T15:18:40.430+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>ソケットライブラリ</title><summary type="text">Sagittarius は随分長らくソケット周りのライブラリが二つ(SRFI も入れると三つ)あった。(sagittarius socket) と (rfc tls) である。どっちもそれなりに良くできていると思っているのだが、タイムアウト系の設定、特にコネクションタイムアウトを入れるのが大変だなぁという感じがしていた。(フラグが全部オプショナル引数なので、コネクションタイムアウトを後方互換を保ったまま入れるには引数の最後につける必要がある)。また、今時普通のソケットと TLS ソケットを分けて作るのも面倒が多いなぁと思いつつあったので、色々統合した感じのライブラリを作った。
(net socket) ライブラリはなんとなく今風な感じでソケットの作成を行うライブラリである。使い方はこんな感じ。

(import (rnrs)
        (net socket))

(define </summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2021/05/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/1022847318765160911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/1022847318765160911'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2021/05/blog-post.html' title='ソケットライブラリ'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-4016792383202699467</id><published>2021-04-22T21:00:00.003+02:00</published><updated>2021-04-22T21:07:16.314+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>レコードビルダー</title><summary type="text">&amp;nbsp;R6RS のレコードは便利である。またポータブルに継承をしたい場合にはこれしか手がない。不便な点としてはフィールドが増えるとデフォルトのコンストラクタでは引数の数が増大するところだろう。何かしらのクライアントとか、コネクションみたいなものであれば、protocol を使って逃げる手もあるが、データ型だと面倒になってくる。引数の数が片手の数で足りなくなると尚更である。ということで、そんな悩みを緩く解決するライブラリを作ってみた。これである。使い方は非常に簡単でこんな感じで使える。
(import (rnrs)
        (record builder))

(define-record-type base
  (fields a b))
(define-syntax base-builder
  (make-record-builder base ((a &#39;ok))))
</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2021/04/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/4016792383202699467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/4016792383202699467'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2021/04/blog-post.html' title='レコードビルダー'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-6288257857850237204</id><published>2020-11-02T20:57:00.002+01:00</published><updated>2020-11-02T20:57:31.899+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>XML signature</title><summary type="text">It&#39;s been a while writing a blog post. I wasn&#39;t really actively working on Sagittarius or Scheme, so there was nothing I can write. (and I was super busy with my life, incl. work). That&#39;s the excuse. I hope I will keep posting something, but I can&#39;t promise.Even though I wasn&#39;t actively writing Scheme, I&#39;ve been trying to enrich XML related libraries of Sagittarius. As we, probably, all know, </summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2020/11/xml-signature.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6288257857850237204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6288257857850237204'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2020/11/xml-signature.html' title='XML signature'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-4932547735484647806</id><published>2019-09-10T11:25:00.003+02:00</published><updated>2019-09-10T11:25:39.207+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>Saven: あなたの悩みを救うかもしれないビルドツール</title><summary type="text">Scheme にはSNOW!、Akku等のリポジトリ的がある。個人的にはこれらに乗っかってプログラムを組んだ方が楽だと思っているのではあるが、これらのリポジトリには登録されていないライブラリの依存関係を手作業でインストールするのは面倒。個人的によく使う r7rs-postgresql、r6rs-redis はどこのリポジトリにも入ってなかったりする。GitHub にコードがあるだけで、パッケージのパの字も考慮されていない(製作者の顔が見てみたいものだ)。リポジトリが使えれば楽だが、使えない状況である。となれば、今欲しいのはリポジトリではなくビルドツールではないだろうか？

ライブラリの依存関係は割と頭の痛い問題だ。例えば、r6rs-redis は r6rs-usocket に依存していて、r6rs-usocket は r6rs-pffi と r6rs-psystem に依存している。拙作</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2019/09/saven.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/4932547735484647806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/4932547735484647806'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2019/09/saven.html' title='Saven: あなたの悩みを救うかもしれないビルドツール'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-6683421797315194319</id><published>2019-07-08T15:28:00.002+02:00</published><updated>2019-07-08T15:28:47.264+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>ベンチマークしてみる</title><summary type="text">こんなツイートを見かけた。


charのlistをequal?とか適当なcdr再帰で比較するのと、そのlistと同じ文字列が表すsymbolをeq?で比較すんのって処理どっちが早いんだろう…
— Aaron先生(でがらしのすがた) (@takum97) 1 July 2019

個人的にシンボルに変換するのはあり得ないかなと思ってはいるのだが、equal?と再帰はどっちが速いか分からない(特に Sagittarius では C 側で実装されているし)。ということでベンチマークを取ってみた。単純な比較でいいかなぁと思ったので、スクリプトは以下のようなものにした。

#!r6rs
(import (rnrs)
        (bench time))

(define string (let-values (((o e) (open-string-output-port)))
</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2019/07/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6683421797315194319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/6683421797315194319'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2019/07/blog-post.html' title='ベンチマークしてみる'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-3918355041717706245</id><published>2019-05-24T09:56:00.002+02:00</published><updated>2019-05-24T09:56:43.776+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>R6RS ライブラリ周りの解説</title><summary type="text">ツイッターで R6RS のライブラリ解決の挙動について言及している呟きを見かけたので、ちょっと書いてみることにした。あくまで Sagittarius 内部ではこうしているというだけで、これが唯一解ではないことに注意。


R6RS 的なライブラリファイルの位置付け

R6RS 的にはライブラリはファイルである必要はない。ライブラリは式の定義が書かれていると記載されているだけで特にそれがどこにあるかということには言及していないからだ。これを都合よく解釈すれば、処理系の判断でライブラリを In Memory にしておいても問題ないし、マシン語の塊にしておいても問題ないということである。またライブラリは Top level のプログラムではないので、スクリプトファイルにその定義を置くことは許されていない(っが Sagittarius では利便性のため許していたりする)。



このことから、</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2019/05/r6rs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/3918355041717706245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/3918355041717706245'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2019/05/r6rs.html' title='R6RS ライブラリ周りの解説'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-2606628814514877385</id><published>2019-04-12T15:57:00.000+02:00</published><updated>2019-04-12T15:57:27.790+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>R6RS MongoDB with transaction</title><summary type="text">I&#39;ve made a portable R6RS MongoDB library, I think, last year. Now I needed to support transaction so decided to implement it. Since MongoDB 4.0.0, it supports transactions. However, their document doesn&#39;t say which command to use or how. The only thing it mentions is I need to set up replica sets.

If you there&#39;s no documentation, then what you can do is reverse engineering. So, I&#39;ve written a&amp;</summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2019/04/r6rs-mongodb-with-transaction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/2606628814514877385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/2606628814514877385'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2019/04/r6rs-mongodb-with-transaction.html' title='R6RS MongoDB with transaction'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37655209.post-8177406675624009326</id><published>2019-04-01T23:18:00.001+02:00</published><updated>2019-04-01T23:18:20.604+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sagittarius"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheme"/><title type='text'>JSON 周りのライブラリ</title><summary type="text">宝クジが大当たりしました。

四月馬鹿お終い。

Sagittarius は意外にも JSON 周りのライブラリが充実している。開発者である僕の本業が Web 系だからというのも要因の一つだと思う。一昔前の XML みたいな位置に JSON がいるのが大きい。最近書いてるアプリでこれらのライブラリをふんだんに使って我ながら便利な物を書いたものだと感心したので宣伝を兼ねて自慢することにする(これくらいの勢いじゃないとブログ書くネタがないともいう)。

簡単なクエリ
(text json pointer)&amp;nbsp;は簡単な JSON クエリを提供する RFC6901 を実装したもの。対象となる JSON の構造や配列の要素番号が予め分かっている時に使える。こんな感じ

(import (rnrs) (text json pointer) (text json))

(define </summary><link rel='replies' type='text/html' href='http://compassoftime.blogspot.com/2019/04/json.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/8177406675624009326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37655209/posts/default/8177406675624009326'/><link rel='alternate' type='text/html' href='http://compassoftime.blogspot.com/2019/04/json.html' title='JSON 周りのライブラリ'/><author><name>kei</name><uri>http://www.blogger.com/profile/04280471934183261698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8d3qb_dKCwLKqWjq1021CHIM3AbmdwwpWqV5mDzzS9RGiDV6U-Q7t-oVPPliiw7DV0O5IGg3-K6ozOwnqGTY9xci8DHHgfqOo3mJNaZvJG_fvmYHZvkLpxAh1Uq-fQ/s85/324c3c0f.jpg'/></author><thr:total>0</thr:total></entry></feed>