PLOGHELP IS Chris Mellish August 1982 Revised by Kathryn Seifert August 1986 Evaluating POP-11 and arithmetic expressions which return one result ?- is Keywords: POP-11, Prolog, arithmetic, mixed language programming, evaluation CONTENTS - (Use g to access sections) -- INTRODUCTION -- USING 'IS' FOR ARITHMETIC -- USING 'IS' TO EVALUATE NON-ARITHMETIC POP-11 EXPRESSIONS -- PROLOG_EVAL -- RELATED DOCUMENTATION -- INTRODUCTION ------------------------------------------------------- 'is' is a built-in Prolog predicate which is declared as an infix operator of precedence 40 and fix "xfx" (see PLOGHELP * OP). Calls of this predicate take the following form: ?- is The expression E can be an arithmetic expression or other POP-11 expression. V becomes bound to the evaluation of E. V may be initially instantiated or uninstantiated, but E must be fully instantiated. -- USING 'IS' FOR ARITHMETIC ------------------------------------------ If E is an arithmetic expression, then it may be an integer or a real number, or it may be composed of numbers using the special functors: Expr1 * Expr2 - multiplication Expr1 + Expr2 - addition Expr1 - Expr2 - subtraction Expr1 / Expr2 - real number division (See *MOD) Expr1 mod Expr2 - integer remainder (See *INT) Expr1 div Expr2 - integer division (See *MOD) In fact, the name of any POP-11 procedure that takes numbers as arguments and produces a single result can be used in making arithmetic expressions for 'is' (see HELP * MATH and REF * NUMBERS). For instance, if a procedure SUMSQ produced the sum of the squares of two numbers, it would be possible to say: ?- X is 3 + sumsq(23,34). If 'sumsq' was additionally declared as an operator (eg ?- op(20,xfy,sumsq). See PLOGHELP * OP) then it would be possible to write: ?- X is 3 + 23 sumsq 34. as an equivalent to the above goal. -- USING 'IS' TO EVALUATE NON-ARITHMETIC POP-11 EXPRESSIONS ----------- 'is' can be used to evaluate the Prolog representation of non-arithmetic POP-11 expressions also. As with arithmetic expressions, care must be taken that the POP-11 expressions return only one result. See PLOGHELP * ARE for a library package which allows you to evaluate POP-11 expressions which return any number of results. Here is an example of how 'is' can be used in a non-arithmetic context: ?- X is rev(hd([[black, and, blue], [cats, and, dogs]])). X = [blue, and, black] ?  yes See PLOGHELP * PLOGTOPOP and PLOGHELP * MIXED_LANGUAGES for other ways of calling POP-11 from Prolog. -- PROLOG_EVAL -------------------------------------------------------- The predicate 'is' is equivalent to the built-in predicate 'prolog_eval/2' (see PLOGHELP * PROLOG_EVAL). -- RELATED DOCUMENTATION ---------------------------------------------- HELP * MATH Overvie of mathematical operations and procedures in POP-11 PLOGHELP * ARE Evaluating POP-11 expressions which return any number of results PLOGHELP * ARITHMETIC Overview of HELP files dealing with operations on numbers PLOGHELP * MIXED_LANGUAGES Overview of methods of interfacing Prolog and other languages PLOGHELP * PLOGTOPOP How to call POP-11 from Prolog PLOGHELP * POPSTRING How to put POP-11 strings in Prolog programs PLOGHELP * POPTOPLOG How to call Prolog from POP-11 PLOGHELP * PROLOG_EVAL How to evaluate the Prolog representation of a POP-11 expression PLOGHELP * PROLOG_LANGUAGE Predicates and library package for switching from Prolog to POP-11 PLOGHELP * SIMPLEPOP Library package to do simple things in POP-11 from Prolog REF * NUMBERS Detailed description of operations on numbers in POPLOG --- C.all/plog/help/is ------------------------------------------------- --- Copyright University of Sussex 1988. All rights reserved. ----------