#:g1: check-errorsの紹介

Posted 2014-08-13 03:50:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の225日目です。

check-errorsとはなにか

 check-errorsは、Kon Lovett氏作のChickenで関数の引数チェックをするユーティリティです。

パッケージ情報

パッケージ名check-errors
Chicken eggs:check-errors - The Chicken Scheme wiki

インストール方法

$ sudo chicken-install check-errors

すれば、

(use check-errors)

で使えます。

試してみる

 ドキュメントを眺めて最初に思うのは、型一つにつき対応する手続きがずらっとあるのか、というところです。
type-errors系と、type-checks系に分かれますが、

のような感じです。これに加えて、SRFI 4に定義されているものも同じように述語が用意されています。

 使い方はシンプルに

(define (foo x y)
  (check-integer 'foo x "foo: arg0")
  (check-integer 'foo y "foo: arg1")
  x)

(foo 1 2.3) ;!> Error: (foo) bad `foo: arg1' argument type - not an integer: 2.3

(define (bar n) (error-fixnum 'bar n 0) n)

(bar 4.2) ;!> Error: (bar) bad `0' argument type - not a fixnum: 4.2

というところ。error-とcheck-で殆ど変わりない気がしますが…。
define-error-type等で自前の定義もできます。

まとめ

 今回は、check-errorsを紹介してみました。
Schemeだと型ごとに対応する手続きが存在するというのは割合に見掛けますが、これもそんな感じですね。

comments powered by Disqus