fJg̊Tv


1. prologƂ̗ގ

fJǵA1Kq_ɂĂ邽߁Aprolog
Ƒ̋ʓ_܂B
ŁAXg̘AvOŃfJgprolog
rĂ݂܂傤B


fJgł͈ȉ̂悤ɂȂ܂B

	<append #Z () #Z>;
	<append (#W : #Z1) (#W : #X1) #Y> <append #Z1 #X1 #Y>;

	?<append #x (a b) (c d)>; 


prologł͈ȉ̂悤ɂȂ܂B

	append(Z, [], Z).
	append( [W | Z1], [W | X1], Y) :- append(Z1, X1, Y).

	? append(X, [a b], [c d]). 



ǂ̗łA2Ƒ3̃XgAA
1ɌʂԂ܂B

Ⴂł傤B
1) q<>ŊB
2) ̋؂͋󔒂gB
3) prologł͍ŌɃsIh"."uAfJg
   ̓Z~R";"uB
4) Xg[]ł͂Ȃ()gB
5) Xg𕪊"|"AfJgł":"łB
6) wbhƃ{fB̋؂prologł":-"g
  fJgł͉B
7) fJgł͕ϐɂ"#"tB

fJgŁALappendsɂ́Â悤
?tqŎs܂B

	?<append #x (a b) (c d)>;


2. prologƂ̑_

OŃfJgprologƂ̗ގ_ɂČy
Ał͑_ɂďqׂ܂B 

fJgł́A{fBɏ̂q̗
prologƂ͈قȂACӂ̃Xg邱
傫قȂ܂BXg̏ꍇ̎s͋Lq
ꂽ珇Ɏs܂B 

<example #x> (<e1 #x> (<e2 #x #y> <e3 #y>) <e4 #y> ) <e5 #x>; 

L̗ł́AexamplesƁAe1, e2, e3, 
e4, e5̏Ɏs܂B 

̋Lq̗_́Aq̂Ȃ܂Ƃ߂ďq
ɓn悤ȃ^ȏs邱ƂAɎ
\͗p̋L̂߂ɏ܂Ƃ߂邽߂
pł邱ƂłB 

\͂̂߂̋LƂ{}JԂA![]ȗ\A
|IAIȂǂĝprologƂ̑傫ȑ_łB 

<example2 #a> <abc> { <def #a> | (<hij> <lkm>) } ![ <nop> ] <end>; 

L̗ł́Aexample2sƁAabcs
Adef(hij lkm)̂ǂ炩鏈JԂA
ǂYȂ΃[v𔲂āAnop͐
sĂAŌends܂B 


3. ߃Rg

(Rg)ɂ͎3ނ܂B
 - //s܂
 - #s܂
 - /* */Ɉ͂܂ꂽ͈

4. lvZ

̌vZɂ́Ałletq, _łletfq
g܂B

	<let #x = 1 + 2>;
	<letf #f = 1.1 + 0.3*(2.3-1.2)>;

ł́Aq֐qꂪg܂B

	<letf #f = ::sys <sin #x1 3.14>+::sys<cos #x2 3.14>>;

let͏ȗ邱Ƃł܂Bȉ͂QƂłB

	<let #z = #x + #y>;
	<#z = #x + #y>;

 ) letf͏ȗł܂B


5. ֐q

let, letf, f, funcȂǏq̈͊֐qƂĕ]A
֐q̕Ԃ֐l͑1łB
Ԃl̕ϐ́Aϐ"_"gƕ֗łB

	<letf #x = ::sys<sin _ ::sys<cos _ 3.14>>>;

let, letf̒Ŏĝ́AlԂ֐݂̂łB

	<f #x ::sys<car #x1 ::sys<cdr _ (a b c)>>>;

ffunc̕ʖłA܂܂B
܂Af͈ƂăXg邱Ƃ\łAXg
̗vfɊ֐qꂪ܂܂ꍇ́Aׂĕ]ꂽ
֐lƂĕԂ܂B

	<f #x (This is a ::sys <getline _>)>;

(L"::sys"Ƃ̂͌q郉CǔĂяo
\AsysW[getlineq̌ĂяoӖ܂B)

6. Cu

CǔĂяo͈ȉ̂悤Ȍ`ōs܂B

 ::CuW[ <q>
 <unify CuW[ <q>>
 <obj CuW[ <q>>

3ނ̌Ăяo@͓̓ełB


7. IuWFNgw

IuWFNg͈ȉ̂悤Ȍ`Œ`܂B

 :: < IuWFNg
	vO܂inheirt pIuWFNg
 >;

ƂĒAyMÃIuWFNgȉ
܂B

::<bird
	<fly>;
	<walk>;
>;

::<penguin
	<fly>
		<!><false>;
	<swim>;
	inherit bird;
>;

::<hawk
	inherit bird;
>;

IuWFNǧĂяóACǔĂяo@
ƓłBȉĂ݂ĂB

?::bird <swim>;
?::penguin <swim>;
?::bird <walk>;
?::penguin <walk>;
?::bird <fly>;

?::penguin <fly>;
?::penguin <run>;

?::hawk <fly>;
?::hawk <walk>;
?::hawk <swim>;


7. EBNFL@

\͂̂߂EBNFL@g܂B

<O> "c";
<O> "";

<name #x>
	"" ""
	<O> <GETTOKEN #x>
	"ł"
	["B"]
	;

? ::sys<getline _ <name #name>>;

͍łB
result --
(<obj sys <getline ͍łB <name >>>)
-- true

-------------------------------------------------------------
