⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 id.602271.mal

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 MAL
字号:
# Monet Mil to Mal compiler# Copyright (c) 2001-2004, CWI. All rights reserved.#Predefined code segment#The compiler can not guarantee an accurate compilation,#because MIL unlike MAL is a dynamically typed language.#A few guidelines to maximize usefullness.#- make the type of variables explicit, in particular 'nil'#- upon advice of M2m to remap identifiers, change it in your program directly#use the "mil_schema" for additional support routines#	io.print("# Date:\t\t2002-08-30 00:57\n");#	io.print("# Priority:\t5\n");#	io.print("# Submitted By:\tAlex van Ballegooij (bally)\n");#	io.print("# Assigned To:\tNiels Nes (nielsnes)\n");#	io.print("# Category:\tNone\n");#	io.print("# Status:\tClosed\n");#	io.print("# Summary:\n");#	io.print("# oid v.s. void bat behavior\n");#	io.print("# \n");#	io.print("# void bats behave differntly fomr oid bats under insertion, \n");#	io.print("# yet it is possible to unexpectedly end up with void \n");#	io.print("# bats after certain operations (e.g. join), which could \n");#	io.print("# lead to unpredictable behavior. \n");#	io.print("# Build two simple bats, using OIDs.\n");	aa_a := new(nil:oid,nil:oid);	ba_a := oid(0);	ca_a := oid(0);	da_a := insert(aa_a,ba_a,ca_a);	ea_a := oid(1);	fa_a := oid(1);	oid_oid_bat := insert(da_a,ea_a,fa_a);#	io.print("var oid_oid_bat := insert(insert(bat(oid,oid),oid(0),oid(0)),oid(1),oid(1));");	ga_a := print(oid_oid_bat);#	io.print("");	ha_a := new(nil:oid,nil:int);	ia_a := oid(0);	ja_a := insert(ha_a,ia_a,0);	ka_a := oid(1);	oid_int_bat := insert(ja_a,ka_a,1);#	io.print("var oid_int_bat := insert(insert(bat(oid,int),oid(0),0),oid(1),1);");	la_a := print(oid_int_bat);#	io.print("# Monet decides to make the join result VOID (which is possible),\n");#	io.print("# what makes this problematic however is the difference in behavior in\n");#	io.print("# the subsequent insert-tests.\n");	void_int_bat := join(oid_oid_bat,oid_int_bat);#	io.print("var void_int_bat := join(oid_oid_bat,oid_int_bat);");	ma_a := print(void_int_bat);#	io.print("# inserting 'in-sequence' into an OID bat\n");#	io.print("# a single (OID) tuple \n");	na_a := copy(oid_int_bat);	BAT_WRITE:= mil.take("BAT_WRITE");	oa_a := access(na_a,BAT_WRITE);#	io.print("print(insert(access(copy(oid_int_bat),BAT_WRITE),");	pa_a := oid(2);	qa_a := insert(oa_a,pa_a,2);	ra_a := print(qa_a);#	io.print("# a complete (OID) bat.\n");	sa_a := copy(oid_int_bat);	ta_a := access(sa_a,BAT_WRITE);#	io.print("print(insert(access(copy(oid_int_bat),BAT_WRITE),");	ua_a := new(nil:oid,nil:int);	va_a := oid(2);	wa_a := insert(ua_a,va_a,2);	xa_a := insert(ta_a,wa_a);	ya_a := print(xa_a);#	io.print("# a complete (VOID) bat.\n");	ab_a := copy(oid_int_bat);	bb_a := access(ab_a,BAT_WRITE);#	io.print("print(insert(access(copy(oid_int_bat),BAT_WRITE),");	cb_a := new(nil:oid,nil:int);	fb_a := oid(2);	gb_a := insert(eb_a,fb_a,2);	hb_a := insert(bb_a,gb_a);	ib_a := print(hb_a);#	io.print("# inserting 'out-of-sequence' into an OID bat\n");#	io.print("# a single (OID) tuple \n");	jb_a := copy(oid_int_bat);	kb_a := access(jb_a,BAT_WRITE);#	io.print("print(insert(access(copy(oid_int_bat),BAT_WRITE),");	lb_a := oid(10);	mb_a := insert(kb_a,lb_a,10);	nb_a := print(mb_a);#	io.print("# a complete (OID) bat.\n");	ob_a := copy(oid_int_bat);	pb_a := access(ob_a,BAT_WRITE);#	io.print("print(insert(access(copy(oid_int_bat),BAT_WRITE),");	qb_a := new(nil:oid,nil:int);	rb_a := oid(10);	sb_a := insert(qb_a,rb_a,10);	tb_a := insert(pb_a,sb_a);	ub_a := print(tb_a);#	io.print("# a complete (VOID) bat.\n");	vb_a := copy(oid_int_bat);	wb_a := access(vb_a,BAT_WRITE);#	io.print("print(insert(access(copy(oid_int_bat),BAT_WRITE),");	xb_a := new(nil:oid,nil:int);	yb_a := oid(10);	bc_a := oid(10);	cc_a := insert(ac_a,bc_a,10);	dc_a := insert(wb_a,cc_a);	ec_a := print(dc_a);#	io.print("# inserting 'in-sequence' into a VOID bat\n");#	io.print("# a single (OID) tuple \n");	fc_a := copy(void_int_bat);	gc_a := access(fc_a,BAT_WRITE);#	io.print("print(insert(access(copy(void_int_bat),BAT_WRITE),");	hc_a := oid(2);	ic_a := insert(gc_a,hc_a,2);	jc_a := print(ic_a);#	io.print("# a complete (OID) bat.\n");	kc_a := copy(void_int_bat);	lc_a := access(kc_a,BAT_WRITE);#	io.print("print(insert(access(copy(void_int_bat),BAT_WRITE),");	mc_a := new(nil:oid,nil:int);	nc_a := oid(2);	oc_a := insert(mc_a,nc_a,2);	pc_a := insert(lc_a,oc_a);	qc_a := print(pc_a);#	io.print("# a complete (VOID) bat.\n");	rc_a := copy(void_int_bat);	sc_a := access(rc_a,BAT_WRITE);#	io.print("print(insert(access(copy(void_int_bat),BAT_WRITE),");	tc_a := new(nil:oid,nil:int);	uc_a := oid(2);	wc_a := oid(2);	xc_a := insert(vc_a,wc_a,2);	yc_a := insert(sc_a,xc_a);	ad_a := print(yc_a);#	io.print("# inserting 'out-of-sequence' into a VOID bat\n");#	io.print("# a single (OID) tuple \n");#	io.print("# This test gives an error:\n");	bd_a := copy(void_int_bat);	cd_a := access(bd_a,BAT_WRITE);#	io.print("print(insert(access(copy(void_int_bat),BAT_WRITE),");	dd_a := oid(10);	ed_a := insert(cd_a,dd_a,10);	fd_a := print(ed_a);#	io.print("# These two tests give incorrect answers:\n");#	io.print("# a complete (OID) bat.\n");	gd_a := copy(void_int_bat);	hd_a := access(gd_a,BAT_WRITE);#	io.print("print(insert(access(copy(void_int_bat),BAT_WRITE),");	id_a := new(nil:oid,nil:int);	jd_a := oid(10);	kd_a := insert(id_a,jd_a,10);	ld_a := insert(hd_a,kd_a);	md_a := print(ld_a);#	io.print("# a complete (VOID) bat.\n");	nd_a := copy(void_int_bat);	od_a := access(nd_a,BAT_WRITE);#	io.print("print(insert(access(copy(void_int_bat),BAT_WRITE),");	pd_a := new(nil:oid,nil:int);	qd_a := oid(10);	sd_a := oid(10);	td_a := insert(rd_a,sd_a,10);	ud_a := insert(od_a,td_a);	vd_a := print(ud_a);#	io.print("#\n");#	io.print("# The void-bats behave strange under insertion,\n");#	io.print("# Either errors should be given consequently \n");#	io.print("# (as soon as a tuple 'out-of-sequence' is inserted)\n");#	io.print("# or void bats should be materialized to oid when needed.\n");#	io.print("#\n");#	io.print("# I would argue for the latter, as there is no real reason \n");#	io.print("# for a user to expect the bat in this example to be void,\n");#	io.print("# (a join result of a [oid,oid] and a [oid,int] bat), yet\n");#	io.print("# it behaves differently from what a user would expect from\n");#	io.print("# the (expected) [oid,int] bat.\n");#	io.print("#\n");#	io.print("# The provided stable output has been hand-crafted to \n");#	io.print("# depict that which I argue to be the 'correct' outpu.\n");#	io.print("#\n");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -