% file: dict.p % version 1.03 % dictionary(Word, Pos, Listing). dictionary(bluebird,noun,[[singular, bluebird], [plural, bluebirds]]). dictionary(lily,noun,[[singular, lily], [plural, lilies]]). dictionary(moose,noun,[[singular, moose], [plural, moose]]). dictionary(goose,noun,[[singular, goose], [plural, geese]]). dictionary(run,verb,[[singular, runs], [plural, run]]). dictionary(fly,verb,[[singular, flies], [plural, fly]]). dictionary(grow,verb,[[singular, grows], [plural, grow]]). dictionary(do,verb,[[singular, does], [plural, do]]). dictionary(this,det,[[singular, this], [plural, these]]). dictionary(that,det,[[singular, that], [plural, those]]). dictionary(the,det,[[singular, the], [plural, the]]). dictionary(a,det,[[singular, a], [plural, the]]). dictionary(high,adv,[[singular, high], [plural, high]]). dictionary(fast,adv,[[singular, fast], [plural, fast]]). dictionary(far,adv,[[singular, far], [plural, far]]). dictionary(quickly,adv,[[singular, quickly], [plural, quickly]]). dictionary(slowly,adv,[[singular, slowly], [plural, slowly]]). pos(Word,Pos) :- dictionary(Word,Pos,_). in_dict(Word) :- dictionary(Word,_,_). in_dict(Word) :- in_dictionary(Word,_). % in_dictionary(+Word, ?Entry) in_dictionary(Word,Word) :- dictionary(Word,_,_). in_dictionary(Word,Entry) :- singular_of(_,Word,Entry). in_dictionary(Word,Entry) :- plural_of(_,Word,Entry). % singular_of(Word,Singular,Entry) :: Word has singular Singular under % entry Entry singular_of(Word,Singular,Word) :- dictionary(Word,_,Listing), extract(singular,Listing,Singular), !. singular_of(Word,Singular,Entry) :- dictionary(Entry,_,Listing), in_listing(Word,Listing), extract(singular,Listing,Singular), !. % plural_of(Word,Plural,Entry) :: Word has plural Plural under % entry Entry plural_of(Word,Plural,Word) :- dictionary(Word,_,Listing), extract(plural,Listing,Plural), !. plural_of(Word,Plural,Entry) :- dictionary(Entry,_,Listing), in_listing(Word,Listing), extract(plural,Listing,Plural), !. in_listing(Word,[[_, Word] | _]). in_listing(Word,[_ | Rest]) :- in_listing(Word,Rest). extract(Attribute,[[Attribute, Value] | _], Value). extract(Attribute,[_ | Rest], Value) :- extract(Attribute,Rest,Value).