KEMBAR78
LISP:Predicates in lisp | PPTX
Predicates in Lisp
 PredicatesA predicate is a function used to test for some condition involving its arguments and returns nil if the condition is false, or some non-nil value if the condition is true.Name of the predicates in CL usually ends with p.Ex: numberp, standard-char-p etc.
overviewLogical valuesData Type predicatesGeneral Type PredicatesSpecific data type predicatesEquality predicatesLogical operators
Logical valuesThe names nil and t are constants in LispThis object represents logical false value and also the empty list.It can also be written as ()The values of nil and t are not permitted to be changed.Data type predicates:using data type predicates one can determine    whether or not it belongs to a given type, or one     can compare two type specifies.
General Type predicatesSyntax:typep object typeTypep is the predicate that is true if the object is of type type false otherwise.Subtypep type1 type2This predicate returns T if type1 is a subtype of type1 else it returns nil.Ex: (subtypep t t) returns T
Subtypep are supposed to return a second value of nil unless one or both of its arguments involves satisfies and, or, not or member.Subtypep should signal an error when one or both of its arguments involves values or the list form of the function type specifierSubtypep must always return the two values t and t in the case where its arguments, after expansion of specifies defined by deftype are equal.(subtypep ‘(array A) ‘ (array B)) is true if and only if (upgraded-array-element-type ‘A) is the same type as (upgraded-array-element-type ‘ b)(subtypep ‘ (complex A) ‘ (complex B)) is true if and only if (upgraded-complex-part-type ‘A) and (upgraded-complex-part-type ‘B) is of same type.
Specific data type predicatesThe following data types test for specific individual data types.null object returns true if the argument is () or false otherwise.symbolp object returns true if the argument is a symbol else returns falseatom object is true if the argument is not cons otherwise its false.consp object is true if the argument is a cons, false otherwiselistp objectis true if the argument is a cons or an empty list (), false otherwiseNumberp object is T if the argument is any kind of number
Rationalp object is T if the argument is a rational number false otherwiseSimilarly we have floatp, charaterp, vectorp, stringp, complexp, simple-bit-vector-p, simple-string-vector-p, arrayp etc.packagep object is T if its argument is a package and otherwise is falsefunctionp object is T if its arguments are suitable for applying to arguments, using for ex the funccall or apply function and otherwise is falseCompiled-function-p object is T if its argument is any compiled code object and otherwise is falseCommonp object is T if its argument is any standard CL data type, and otherwise is false
Equality predicatesCl provides these predicates to test for the equality of the two objects: eq, eql, equal, equalp eq x y is true if and only if x and y are the same identical objects.Ex: (eq ‘g ‘h) false       (eq 3 3)true        (eq “hi” “HI”) falseEql x y is true if the arguments are eq, or of there are numbers of the same type with the same value, or if there are character objects that represent the same character
equal x yis true if the arguments are structurally similar objects. (isomorphic objects)Ex: (equal #\B #\B) true        (equal “FOO” “FOO”) trueequalp x y is true if the two objects are equal, and if and only if they are eq that is, the same identical object. two hash tables are considered the same by equalp if and only if they satisfy the following four conditions:They must be of the same kind ( equivalent :test arguments must be given to make hash-table when the two hash-tables are created.
They must have the same number of entries.
For every entry(key1, value1) in one hash table there must be the corresponding entry(key2, value2) in the other hash table.
For every entry(key1, value1) in one hash table and its corresponding entry(key2, value2) in the other , such that key1 and key2 are the same, equalp must be true of value1 and value2.Logical operatorsCL provides three operators as Boolean value: and, or, and notEx: not yReturns t if y is nil else returns nil.And returns t if the condition is true else NIL.Ex: (and form1, form2,…)Evaluates each form one at the time from left to right. If at least one form returns a nil, the evaluation is stopped by returning a nil.Ex: (and (< 1 2)                 (< 3 4)                 (princ “true”))true   “true”

LISP:Predicates in lisp

  • 1.
  • 2.
    PredicatesA predicateis a function used to test for some condition involving its arguments and returns nil if the condition is false, or some non-nil value if the condition is true.Name of the predicates in CL usually ends with p.Ex: numberp, standard-char-p etc.
  • 3.
    overviewLogical valuesData TypepredicatesGeneral Type PredicatesSpecific data type predicatesEquality predicatesLogical operators
  • 4.
    Logical valuesThe namesnil and t are constants in LispThis object represents logical false value and also the empty list.It can also be written as ()The values of nil and t are not permitted to be changed.Data type predicates:using data type predicates one can determine whether or not it belongs to a given type, or one can compare two type specifies.
  • 5.
    General Type predicatesSyntax:typepobject typeTypep is the predicate that is true if the object is of type type false otherwise.Subtypep type1 type2This predicate returns T if type1 is a subtype of type1 else it returns nil.Ex: (subtypep t t) returns T
  • 6.
    Subtypep are supposedto return a second value of nil unless one or both of its arguments involves satisfies and, or, not or member.Subtypep should signal an error when one or both of its arguments involves values or the list form of the function type specifierSubtypep must always return the two values t and t in the case where its arguments, after expansion of specifies defined by deftype are equal.(subtypep ‘(array A) ‘ (array B)) is true if and only if (upgraded-array-element-type ‘A) is the same type as (upgraded-array-element-type ‘ b)(subtypep ‘ (complex A) ‘ (complex B)) is true if and only if (upgraded-complex-part-type ‘A) and (upgraded-complex-part-type ‘B) is of same type.
  • 7.
    Specific data typepredicatesThe following data types test for specific individual data types.null object returns true if the argument is () or false otherwise.symbolp object returns true if the argument is a symbol else returns falseatom object is true if the argument is not cons otherwise its false.consp object is true if the argument is a cons, false otherwiselistp objectis true if the argument is a cons or an empty list (), false otherwiseNumberp object is T if the argument is any kind of number
  • 8.
    Rationalp object isT if the argument is a rational number false otherwiseSimilarly we have floatp, charaterp, vectorp, stringp, complexp, simple-bit-vector-p, simple-string-vector-p, arrayp etc.packagep object is T if its argument is a package and otherwise is falsefunctionp object is T if its arguments are suitable for applying to arguments, using for ex the funccall or apply function and otherwise is falseCompiled-function-p object is T if its argument is any compiled code object and otherwise is falseCommonp object is T if its argument is any standard CL data type, and otherwise is false
  • 9.
    Equality predicatesCl providesthese predicates to test for the equality of the two objects: eq, eql, equal, equalp eq x y is true if and only if x and y are the same identical objects.Ex: (eq ‘g ‘h) false (eq 3 3)true (eq “hi” “HI”) falseEql x y is true if the arguments are eq, or of there are numbers of the same type with the same value, or if there are character objects that represent the same character
  • 10.
    equal x yistrue if the arguments are structurally similar objects. (isomorphic objects)Ex: (equal #\B #\B) true (equal “FOO” “FOO”) trueequalp x y is true if the two objects are equal, and if and only if they are eq that is, the same identical object. two hash tables are considered the same by equalp if and only if they satisfy the following four conditions:They must be of the same kind ( equivalent :test arguments must be given to make hash-table when the two hash-tables are created.
  • 11.
    They must havethe same number of entries.
  • 12.
    For every entry(key1,value1) in one hash table there must be the corresponding entry(key2, value2) in the other hash table.
  • 13.
    For every entry(key1,value1) in one hash table and its corresponding entry(key2, value2) in the other , such that key1 and key2 are the same, equalp must be true of value1 and value2.Logical operatorsCL provides three operators as Boolean value: and, or, and notEx: not yReturns t if y is nil else returns nil.And returns t if the condition is true else NIL.Ex: (and form1, form2,…)Evaluates each form one at the time from left to right. If at least one form returns a nil, the evaluation is stopped by returning a nil.Ex: (and (< 1 2) (< 3 4) (princ “true”))true “true”
  • 14.
    Or operator returnsNIL for false conditions and true conditions return non-nil characters(or form1,form2,…..)Performs or operation the forms one by one from left to right. It is true if at least one of the forms are true Ex; (or (< 3 1) (> 2 1)) T
  • 15.
    Visit more selfhelp tutorialsPick a tutorial of your choice and browse through it at your own pace.The tutorials section is free, self-guiding and will not involve any additional support.Visit us at www.dataminingtools.net