Langphilia! / KL1 / KLIC-C / Generator Objects, 2001-10-26

Generator Objects


Usage in KLIC-KL1 Language

フックした変数を具体化することによってメッセージを送る。 変数の値を読み込もうとすると何らかの計算が行なわれる。

random_numbers

前提
システムで nrand48 が使えること。
new +Range (+Seed)
Seed を種として [0,Range) の乱整数列を生成する random_numbers を作る。
unify
乱数を car に持つストリームを返す。
print
RANDOM@アドレス と表示する。

Usage in KLIC-C Language

klic/gg_methtab.h

前提
include する前にマクロ GGUSE_MY_* を必要に応じて定義しておくこと。 GGDEF_* して GGUSE_MY_* を定義した後、GGDEF_NEW の前に include する。
変数 struct generator_object_method_table GG_method_table
関数 q* GG_STD_UNIFY()
関数 long GG_STD_PRINT()
関数 q* GG_STD_GC()
関数 long GG_STD_REGIST()
関数 long GG_STD_DEALLOCATE()
関数 q* GG_STD_CLOSE()
関数 q GG_STD_SUSPEND()

klic/gg_macro.h

前提
型 GG_OBJ_TYPE を定義すること。
宣言 GG_USE_CLASS(class)
宣言 GGDEF_NEW(), GGDEF_UNIFY(), GGDEF_PRINT(), GGDEF_GC(), GGDEF_REGIST(), GGDEF_DEALLOCATE(), GGDEF_CLOSE(), GGDEF_GENERIC(), GGDEF_SUSPEND(), GGDEF_GENERATE()
q class:new (long GG_ARGC, q GG_ARGV[], q* g_allocp)
宣言 GG_STD_DECL_FOR_NEW
GG_rappend(pref), GG_body(fa)
型 GG_method_table, GG_method_table0(class), GG_method_table1(class)
`class'_g_generator_method_table
定数 GG_OBJ_SIZE
定数 const char* GG_CLASS_NAME_STRING
定数 q GG_SUCCEEDED, GG_GCREQUEST
関数 q* G_MAKE_THE_NEW_GOAL()
関数 (q*) do_shallow_unify(), do_shallow_unify_value()
関数 q* G_SUSPEND()
関数 q GG_MAKE_HOOK_VAR()
関数 void GG_FAIL, GG_ERROR_IN_NEW (const char* errmsg)
GG_ERROR_IN_IN は誤り。
関数 void GG_RETURN, GG_TERMINATE, GG_SUSPEND(var)
関数 void GG_RETURN_FROM_NEW(var), GG_RETURN_FROM_PRINT, GG_RETURN_FROM_GC(newgobj)
関数 void GGSET_NEWOBJ(newgobj), GGSET_NEWOBJ_IN_NEWGEN(newgobj), GGSET_NEWOBJ_FOR_NEW(newgobj, type)
関数 void GGset_myself_for_new
関数 void GGSET_INTARG, GGSET_INTARG_FOR_NEW (var, argv_i)
関数 void GGSET_INTARG_WITHIN_RANGE(var, argv_i, llim, ulim)
関数 GGSET_NEW_CONS(var), GGSET_VAR(self)
関数 void GG_DEREF, GG_DEREF_FOR_NEW (q& x)
関数 void GG_DEREF_AND_TEST(q& x, susp)
関数 GG_UNIFY, GG_KL1_UNIFY (x, y)
関数 void GG_TRY_TO_ALLOC(new, type, size, gc_request)
関数 GG_PUTC(x), GG_PRINT(x), GG_PRINT_KL1_TERMS(x, b, s)
関数 void GG_SUSPEND_GOAL(var, goal)
GG_SWITCH_ON_TERM(cons, atomic, funct, dobj, susp)

klic/ge_exref.h

runtime/ge_exref.c

runtime/gg_shbusy.c

runtime/gg_shvar.c

runtime/random.c


Copyright 2001, TAKAGI Yusuke.