Path: utzoo!attcan!uunet!seismo!sundc!pitstop!sun!quintus!pds From: pds@quintus.UUCP (Peter Schachte) Newsgroups: comp.lang.prolog Subject: Re: modules Summary: problems with atom-based module systems Keywords: another module scheme Message-ID: <958@sandino.quintus.UUCP> Date: 11 May 88 20:39:11 GMT References: <2747@mulga.oz> Organization: Quintus Computer Systems, Mountain View, CA Lines: 33 There are some problems with atom-based module systems. I think that whatever module system you choose, this test should succeed for any atom anytime: test(Atom) :- name(Atom, String), name(Atom, String). Also, it should be possible to take a term representing a goal and do both of the following to it, and get a term representing a different goal in the same module: prefix_term(Term, Term2) :- Term =.. [Pred|Args], name(Pred, Chars), append("prefix_",Chars,Chars2), name(Pred2,Chars2), Term2 =.. [Pred2|Args]. suffix_term(Term, Term2) :- Term =.. [Pred|Args], name(Pred, Chars), append(Chars,"_suffix",Chars2), name(Pred2,Chars2), Term2 =.. [Pred2|Args]. This is important for term_expansion/2. An atom-based module system makes it difficult to do both of these things. -- -Peter Schachte pds@quintus.uucp ...!sun!quintus!pds