1Language::Prolog::TypesU(s3e)r Contributed Perl DocumentaLtainognuage::Prolog::Types(3)
2
3
4

NAME

6       Language::Prolog::Types - Prolog types in Perl.
7

SYNOPSIS

9         use Language::Prolog::Types::overload;
10
11         use Language::Prolog::Types qw(:ctors);
12
13         $atom=prolog_atom('foo');
14         $list=prolog_list(1,2,3,4,5);
15         $functor=prolog_functor('foo',1,2,3,'bar');
16         $nil=prolog_nil;
17
18
19         use Language::Prolog::Types qw(:is);
20
21         print "$atom is an atom\n" if prolog_is_atom($atom);
22         print "$list is a list\n" if prolog_is_list($list);
23         print "$nil is nil\n" if prolog_is_nil($nil);
24
25
26         use Language::Prolog::Types qw(:short);
27
28         $atom=A('foo');
29         $list=L(1,2,3,4);
30         $functor=F('foo',1,2,3,'bar')
31
32         print "$atom is an atom\n" if isA($atom);
33         print "$list is a list\n" if isL($list);
34         print "$nil is nil\n" if isN($nil);
35

ABSTRACT

37       Language::Prolog::Types is a set of modules implementing Prolog types
38       in Perl.
39

DESCRIPTION

41       This module exports subroutines to create Prolog terms in Perl, to test
42       term types and also some utility functions to convert data between
43       Prolog and Perl explicitly.
44
45       You will see that there is not any kind of constructor for Prolog
46       atoms, this is because Perl scalars (numbers or strings) are directly
47       used as Prolog atoms.
48
49       You can also use Perl list references as Prolog lists, and Perl "undef"
50       as Prolog nil ("[]").
51
52   EXPORT_TAGS
53       Subroutines are grouped in three tags:
54
55       ":is"
56           Subroutines to test typing of terms.
57
58           prolog_is_atom($term)
59               true if $term is a valid Prolog atom (Perl number or string).
60
61           prolog_is_nil($term)
62               true if $term is Prolog nil "[]". Perl undef is equivalent to
63               Prolog nil.
64
65           prolog_is_list($term)
66               true if $term is Prolog list.
67
68               It should be noted that Prolog nil although represented with
69               the empty list "[]" is not a list.
70
71           prolog_is_list_or_nil($term)
72               true if $term is a Prolog list or nil.
73
74           prolog_is_functor($term)
75               true if $term is a Prolog functor.
76
77               It should be noted that list are formed with the functor '.'/2.
78
79           prolog_is_variable($term)
80           prolog_is_var($term)
81               true if $term is a Prolog variable.
82
83           prolog_is_ulist($term)
84               true if $term is a Prolog unfinished list (those whose tail is
85               not nil).
86
87           prolog_is_string($term)
88               true if $term can be converted to a string, a list whose
89               elements are integers in the range [0..255].
90
91       ":ctors"
92           Subruotines to create new Prolog terms.
93
94           prolog_list(@terms)
95               returns a new prolog list with elements @terms.
96
97           "prolog_ulist(@terms, $tail)"
98               returns a new prolog unfineshed list with elements @terms and
99               tail $tail.
100
101           "prolog_functor($name, @args)"
102               returns a new prolog functor which name $name and arguments
103               @args.
104
105           prolog_variable($name)
106           prolog_var($name)
107               returns a new prolog variable with name $name.
108
109           prolog_atom($atom)
110               As normal Perl strings and numbers are used to represent Prolog
111               atoms this function only ensures that its argument is properly
112               converted to a string.
113
114           prolog_nil()
115               returns Prolog nil ("[]").
116
117           prolog_string($string)
118               returns Prolog string, that is a list with the ASCII codes of
119               $string.
120
121           "prolog_chain($ftr, $term1, $term2, ..., $termn, $termo)"
122               creates prolog structure
123
124                 $ftr($term1,
125                      $ftr($term2,
126                           $ftr($term3,
127                                $ftr(...
128                                         $ftr($termn, $termo) ... ))))
129
130               it should be noted that
131
132                 prolog_chain($ftr, $term)
133
134               returns
135
136                 $term
137
138           prolog_opaque($object)
139               creates a proxy opaque object to tell Perl to pass the object
140               to Prolog as an opaque reference that can not be directly used
141               from Prolog but just passed back to Perl in callbacks.
142
143       ":util"
144           Subroutines to convert Prolog data to Perl.
145
146           prolog_list2perl_list($term)
147               converts a Prolog_list to a Perl array acounting for all the
148               different possibilities of Prolog list representations.
149
150           prolog_list2perl_string($term)
151               converts a Prolog list to a Perl string. All the elements in
152               the list have to be integers in the range [0..255] or an
153               exception will be raised.
154
155       ":short"
156           For the lazy programmer, ":short" includes a set of abreviations
157           for the ":is" and ":ctors" groups:
158
159           isL($term)
160           isUL($term)
161           isF($term)
162           isV($term)
163           isA($term)
164           isN($term)
165           isS($term)
166           L(@terms)
167           "UL(@terms, $tail)"
168           "F($name, @args)"
169           V($name)
170           A($atom)
171           N()
172           S($string)
173           "C($term1, $term2, ..., $termn, $termo)"
174

SEE ALSO

176       Language::Prolog::Types::overload
177
178       Language::Prolog::Sugar
179
180       Language::XSB
181
183       Copyright 2002-2005, 2007 by Salvador FandiƱo <sfandino@yahoo.com>.
184
185       This library is free software; you can redistribute it and/or modify it
186       under the same terms as Perl itself.
187
188
189
190perl v5.38.0                      2023-07-20        Language::Prolog::Types(3)
Impressum