{Begin SubSec English Phrases} {Title English Phrases} {Text {Begin Note} Date: 4 JUL 1982 1550-PDT From: MASINTER Subject: CLISPIFYENGLISH removed To: lisp The system will no longer attempt to turn Lisp into Clisp-English, even if CLISPIFYENGLSHFLG is T. DWIMIFY of clisp-english is still supported. {End Note} {Label L!2320} {index english phrases in clisp} CLISP also recognizes a limited but expandable set of english-like constructions of the form "A is B", e.g., {lisp FOO IS A NUMBER}, {lisp Z IS NOT A STRING}, {lisp (CDDR X) ISN'T A TAIL OF Y}. Both subject and relation can be "distributed", e.g., {lisp X AND Y ARE ATOMIC} is equivalent to {lisp X IS ATOMIC AND Y IS ATOMIC}. Similarly, {lisp Z IS AN ARRAY OR A LIST} is equivalent to {lisp Z IS AN ARRAY OR Z IS A LIST}, and {lisp A AND B ARE NUMBERS AND LESS THAN 5 AND GT 0} is equivalent to the conjunction of the indicated six predicates. These constructions are translated to the corresponding LISP expressions when they are run or dwimified. In addition, {fn CLISPIFY} will convert LISP forms into "english" when {var CLISPIFYENGLSHFLG}{index CLISPIFYENGLSHFLG CLV} is {lisp T}. CLISP currently knows about the following unary relations in their singular and plural forms: {lisp ARRAY}, {lisp ATOM}, {lisp ATOMIC}, {lisp FLOATING POINT NUMBER}, {lisp LIST}, {lisp LITATOM}, {lisp LITERAL ATOM}, {lisp NEGATIVE}, {lisp NIL} (i.e., {lisp X IS NIL}), {lisp NULL}, {lisp NUMBER}, {lisp SMALL INTEGER}, {lisp SMALL NUMBER}, {lisp STRING}; and the following binary relations in their singular and plural forms: {lisp EQ TO}, {lisp EQUAL TO}, {lisp GEQ}, {lisp GREATER THAN}, {lisp GT}, {lisp LESS THAN}, {lisp LT}, {lisp MEMB OF}, {lisp MEMBER OF}, {lisp TAIL OF}. All relationships can be negated with either {lisp NOT}, {lisp N}, or {lisp N'T}, e.g., {lisp X IS ~LESS THEN Y, A AND B AREN'T ATOMIC}. New relations can be defined via the function {fn NEWISWORD}. {FnDef {FnName NEWISWORD} {FnArgs SING PLU FORM VARS} {Text {arg SING} is the singular form of the new english construct, {arg PLU} the plural without the subject. {arg FORM} is the form the singular construct translates to, and {arg VARS} the parameters. }} For example, "{lisp SMALL INTEGER}" could be defined by {lisp (NEWISWORD '(X IS A SMALL INTEGER) '(ARE SMALL INTEGERS) '(SMALLP X) '(X))} and "{lisp TAIL OF}" by {lisp (NEWISWORD '(X IS A TAIL OF Y) '(ARE TAILS OF Y) '(TAILP X Y) '(X Y))} }{End SubSec English Phrases}