kibi-swipl-linux-x64-gnu 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (550) hide show
  1. package/README.md +29 -0
  2. package/bin/swipl +0 -0
  3. package/bin/swipl-win +0 -0
  4. package/build-manifest.json +70 -0
  5. package/lib/cmake/swipl/SWIPLConfig.cmake +21 -0
  6. package/lib/cmake/swipl/SWIPLConfigVersion.cmake +65 -0
  7. package/lib/cmake/swipl/SWIPLTargets-release.cmake +28 -0
  8. package/lib/cmake/swipl/SWIPLTargets.cmake +109 -0
  9. package/lib/swipl/ABI +1 -0
  10. package/lib/swipl/LICENSE +41 -0
  11. package/lib/swipl/README.md +116 -0
  12. package/lib/swipl/app/README.md +25 -0
  13. package/lib/swipl/app/app.pl +87 -0
  14. package/lib/swipl/app/pack.pl +350 -0
  15. package/lib/swipl/app/qlf.pl +521 -0
  16. package/lib/swipl/app/splfr.pl +177 -0
  17. package/lib/swipl/app/sys.pl +310 -0
  18. package/lib/swipl/bin/swipl.home +1 -0
  19. package/lib/swipl/boot/apply.pl +73 -0
  20. package/lib/swipl/boot/attvar.pl +344 -0
  21. package/lib/swipl/boot/autoload.pl +1226 -0
  22. package/lib/swipl/boot/bags.pl +283 -0
  23. package/lib/swipl/boot/dcg.pl +388 -0
  24. package/lib/swipl/boot/dicts.pl +193 -0
  25. package/lib/swipl/boot/dwim.pl +485 -0
  26. package/lib/swipl/boot/engines.pl +152 -0
  27. package/lib/swipl/boot/expand.pl +1628 -0
  28. package/lib/swipl/boot/gc.pl +65 -0
  29. package/lib/swipl/boot/history.pl +304 -0
  30. package/lib/swipl/boot/init.pl +4682 -0
  31. package/lib/swipl/boot/iri.pl +64 -0
  32. package/lib/swipl/boot/license.pl +390 -0
  33. package/lib/swipl/boot/load.pl +81 -0
  34. package/lib/swipl/boot/messages.pl +2521 -0
  35. package/lib/swipl/boot/packs.pl +306 -0
  36. package/lib/swipl/boot/predopts.pl +154 -0
  37. package/lib/swipl/boot/qlf.pl +141 -0
  38. package/lib/swipl/boot/rc.pl +263 -0
  39. package/lib/swipl/boot/syspred.pl +1634 -0
  40. package/lib/swipl/boot/tabling.pl +2321 -0
  41. package/lib/swipl/boot/threads.pl +42 -0
  42. package/lib/swipl/boot/toplevel.pl +2248 -0
  43. package/lib/swipl/boot/topvars.pl +261 -0
  44. package/lib/swipl/boot.prc +0 -0
  45. package/lib/swipl/cmake/swipl.cmake +131 -0
  46. package/lib/swipl/customize/README.md +23 -0
  47. package/lib/swipl/customize/edit +101 -0
  48. package/lib/swipl/customize/init.pl +164 -0
  49. package/lib/swipl/demo/README.md +33 -0
  50. package/lib/swipl/demo/likes.pl +44 -0
  51. package/lib/swipl/doc/packages/examples/chr/bool.chr +281 -0
  52. package/lib/swipl/doc/packages/examples/chr/chrdif.chr +87 -0
  53. package/lib/swipl/doc/packages/examples/chr/chrfreeze.chr +6 -0
  54. package/lib/swipl/doc/packages/examples/chr/family.chr +116 -0
  55. package/lib/swipl/doc/packages/examples/chr/fib.chr +24 -0
  56. package/lib/swipl/doc/packages/examples/chr/fibonacci.chr +31 -0
  57. package/lib/swipl/doc/packages/examples/chr/gcd.chr +28 -0
  58. package/lib/swipl/doc/packages/examples/chr/leq.chr +34 -0
  59. package/lib/swipl/doc/packages/examples/chr/listdom.chr +138 -0
  60. package/lib/swipl/doc/packages/examples/chr/primes.chr +29 -0
  61. package/lib/swipl/doc/packages/examples/http/README.md +98 -0
  62. package/lib/swipl/doc/packages/examples/http/calc.pl +92 -0
  63. package/lib/swipl/doc/packages/examples/http/demo_body.pl +232 -0
  64. package/lib/swipl/doc/packages/examples/http/demo_client.pl +165 -0
  65. package/lib/swipl/doc/packages/examples/http/demo_daemon.pl +38 -0
  66. package/lib/swipl/doc/packages/examples/http/demo_files.pl +50 -0
  67. package/lib/swipl/doc/packages/examples/http/demo_hello.pl +15 -0
  68. package/lib/swipl/doc/packages/examples/http/demo_login.pl +280 -0
  69. package/lib/swipl/doc/packages/examples/http/demo_openid.pl +177 -0
  70. package/lib/swipl/doc/packages/examples/http/demo_pwp.pl +20 -0
  71. package/lib/swipl/doc/packages/examples/http/demo_rest.pl +56 -0
  72. package/lib/swipl/doc/packages/examples/http/demo_threads.pl +52 -0
  73. package/lib/swipl/doc/packages/examples/http/linux-init-script +126 -0
  74. package/lib/swipl/doc/packages/examples/http/pwp/context.pwp +23 -0
  75. package/lib/swipl/doc/packages/examples/http/pwp/index.pwp +25 -0
  76. package/lib/swipl/doc/packages/examples/http/pwp/pwp1.pwp +12 -0
  77. package/lib/swipl/doc/packages/examples/http/pwp/pwp2.pwp +10 -0
  78. package/lib/swipl/doc/packages/examples/http/pwp/pwp3.pwp +25 -0
  79. package/lib/swipl/doc/packages/examples/http/pwp/pwp4.pwp +23 -0
  80. package/lib/swipl/doc/packages/examples/http/pwp/pwp5.pwp +11 -0
  81. package/lib/swipl/doc/packages/examples/http/pwp/pwp6.pwp +3 -0
  82. package/lib/swipl/doc/packages/examples/http/pwp/pwp7.pwp +3 -0
  83. package/lib/swipl/doc/packages/examples/http/pwp/pwp8.pwp +3 -0
  84. package/lib/swipl/doc/packages/examples/http/pwp/pwpdb.pl +12 -0
  85. package/lib/swipl/doc/packages/examples/http/systemd-script.service +18 -0
  86. package/lib/swipl/doc/packages/examples/http/upstart-script.conf +20 -0
  87. package/lib/swipl/doc/packages/examples/plunit/read.pl +17 -0
  88. package/lib/swipl/doc/packages/examples/plunit/simple.pl +33 -0
  89. package/lib/swipl/doc/packages/examples/ssl/client.pl +83 -0
  90. package/lib/swipl/doc/packages/examples/ssl/etc/README +52 -0
  91. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.p12 +0 -0
  92. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.pem +85 -0
  93. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-key.pem +30 -0
  94. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/cacert.pem +82 -0
  95. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/careq.pem +18 -0
  96. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/crlnumber +1 -0
  97. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt +3 -0
  98. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt.attr +1 -0
  99. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7C.pem +85 -0
  100. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7D.pem +85 -0
  101. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/private/cakey.pem +30 -0
  102. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/serial +1 -0
  103. package/lib/swipl/doc/packages/examples/ssl/etc/server/server-cert.pem +85 -0
  104. package/lib/swipl/doc/packages/examples/ssl/etc/server/server-key.pem +30 -0
  105. package/lib/swipl/doc/packages/examples/ssl/https.pl +267 -0
  106. package/lib/swipl/doc/packages/examples/ssl/server.pl +106 -0
  107. package/lib/swipl/include/SWI-Prolog.h +1544 -0
  108. package/lib/swipl/include/SWI-Stream.h +537 -0
  109. package/lib/swipl/include/Yap/YapInterface.h +283 -0
  110. package/lib/swipl/include/sicstus/sicstus.h +452 -0
  111. package/lib/swipl/lib/x86_64-linux/cgi.so +0 -0
  112. package/lib/swipl/lib/x86_64-linux/crypt.so +0 -0
  113. package/lib/swipl/lib/x86_64-linux/crypto4pl.so +0 -0
  114. package/lib/swipl/lib/x86_64-linux/double_metaphone.so +0 -0
  115. package/lib/swipl/lib/x86_64-linux/files.so +0 -0
  116. package/lib/swipl/lib/x86_64-linux/hashstream.so +0 -0
  117. package/lib/swipl/lib/x86_64-linux/http_stream.so +0 -0
  118. package/lib/swipl/lib/x86_64-linux/isub.so +0 -0
  119. package/lib/swipl/lib/x86_64-linux/json.so +0 -0
  120. package/lib/swipl/lib/x86_64-linux/libswipl.so.10 +0 -0
  121. package/lib/swipl/lib/x86_64-linux/mallocinfo.so +0 -0
  122. package/lib/swipl/lib/x86_64-linux/md54pl.so +0 -0
  123. package/lib/swipl/lib/x86_64-linux/memfile.so +0 -0
  124. package/lib/swipl/lib/x86_64-linux/ntriples.so +0 -0
  125. package/lib/swipl/lib/x86_64-linux/pcre4pl.so +0 -0
  126. package/lib/swipl/lib/x86_64-linux/porter_stem.so +0 -0
  127. package/lib/swipl/lib/x86_64-linux/process.so +0 -0
  128. package/lib/swipl/lib/x86_64-linux/prolog_stream.so +0 -0
  129. package/lib/swipl/lib/x86_64-linux/rdf_db.so +0 -0
  130. package/lib/swipl/lib/x86_64-linux/readutil.so +0 -0
  131. package/lib/swipl/lib/x86_64-linux/rlimit.so +0 -0
  132. package/lib/swipl/lib/x86_64-linux/sched.so +0 -0
  133. package/lib/swipl/lib/x86_64-linux/sgml2pl.so +0 -0
  134. package/lib/swipl/lib/x86_64-linux/sha4pl.so +0 -0
  135. package/lib/swipl/lib/x86_64-linux/snowball.so +0 -0
  136. package/lib/swipl/lib/x86_64-linux/socket.so +0 -0
  137. package/lib/swipl/lib/x86_64-linux/ssl4pl.so +0 -0
  138. package/lib/swipl/lib/x86_64-linux/streaminfo.so +0 -0
  139. package/lib/swipl/lib/x86_64-linux/syslog.so +0 -0
  140. package/lib/swipl/lib/x86_64-linux/time.so +0 -0
  141. package/lib/swipl/lib/x86_64-linux/turtle.so +0 -0
  142. package/lib/swipl/lib/x86_64-linux/uid.so +0 -0
  143. package/lib/swipl/lib/x86_64-linux/unix.so +0 -0
  144. package/lib/swipl/lib/x86_64-linux/uri.so +0 -0
  145. package/lib/swipl/lib/x86_64-linux/websocket.so +0 -0
  146. package/lib/swipl/lib/x86_64-linux/zlib4pl.so +0 -0
  147. package/lib/swipl/library/INDEX.pl +1020 -0
  148. package/lib/swipl/library/aggregate.pl +755 -0
  149. package/lib/swipl/library/ansi_term.pl +653 -0
  150. package/lib/swipl/library/apply.pl +426 -0
  151. package/lib/swipl/library/apply_macros.pl +497 -0
  152. package/lib/swipl/library/arithmetic.pl +320 -0
  153. package/lib/swipl/library/assoc.pl +522 -0
  154. package/lib/swipl/library/atom.pl +169 -0
  155. package/lib/swipl/library/backcomp.pl +688 -0
  156. package/lib/swipl/library/base32.pl +291 -0
  157. package/lib/swipl/library/base64.pl +441 -0
  158. package/lib/swipl/library/broadcast.pl +161 -0
  159. package/lib/swipl/library/build/cmake.pl +137 -0
  160. package/lib/swipl/library/build/conan.pl +232 -0
  161. package/lib/swipl/library/build/make.pl +168 -0
  162. package/lib/swipl/library/build/tools.pl +825 -0
  163. package/lib/swipl/library/charsio.pl +195 -0
  164. package/lib/swipl/library/check.pl +1097 -0
  165. package/lib/swipl/library/check_installation.pl +912 -0
  166. package/lib/swipl/library/clp/INDEX.pl +157 -0
  167. package/lib/swipl/library/clp/bounds.pl +2036 -0
  168. package/lib/swipl/library/clp/clp_distinct.pl +263 -0
  169. package/lib/swipl/library/clp/clp_events.pl +92 -0
  170. package/lib/swipl/library/clp/clpb.pl +1896 -0
  171. package/lib/swipl/library/clp/clpfd.pl +7906 -0
  172. package/lib/swipl/library/clp/simplex.pl +1580 -0
  173. package/lib/swipl/library/codesio.pl +182 -0
  174. package/lib/swipl/library/coinduction.pl +183 -0
  175. package/lib/swipl/library/console_input.pl +289 -0
  176. package/lib/swipl/library/csv.pl +611 -0
  177. package/lib/swipl/library/ctypes.pl +161 -0
  178. package/lib/swipl/library/date.pl +370 -0
  179. package/lib/swipl/library/dcg/INDEX.pl +35 -0
  180. package/lib/swipl/library/dcg/basics.pl +514 -0
  181. package/lib/swipl/library/dcg/high_order.pl +227 -0
  182. package/lib/swipl/library/debug.pl +499 -0
  183. package/lib/swipl/library/dialect/bim.pl +186 -0
  184. package/lib/swipl/library/dialect/commons.pl +77 -0
  185. package/lib/swipl/library/dialect/eclipse/test_util_iso.pl +355 -0
  186. package/lib/swipl/library/dialect/hprolog/format.pl +44 -0
  187. package/lib/swipl/library/dialect/hprolog.pl +314 -0
  188. package/lib/swipl/library/dialect/ifprolog.pl +1317 -0
  189. package/lib/swipl/library/dialect/iso/iso_predicates.pl +277 -0
  190. package/lib/swipl/library/dialect/sicstus/README.TXT +1 -0
  191. package/lib/swipl/library/dialect/sicstus/arrays.pl +121 -0
  192. package/lib/swipl/library/dialect/sicstus/block.pl +278 -0
  193. package/lib/swipl/library/dialect/sicstus/lists.pl +167 -0
  194. package/lib/swipl/library/dialect/sicstus/ordsets.pl +52 -0
  195. package/lib/swipl/library/dialect/sicstus/sockets.pl +174 -0
  196. package/lib/swipl/library/dialect/sicstus/system.pl +262 -0
  197. package/lib/swipl/library/dialect/sicstus/terms.pl +57 -0
  198. package/lib/swipl/library/dialect/sicstus/timeout.pl +92 -0
  199. package/lib/swipl/library/dialect/sicstus.pl +582 -0
  200. package/lib/swipl/library/dialect/sicstus4/aggregate.pl +60 -0
  201. package/lib/swipl/library/dialect/sicstus4/between.pl +62 -0
  202. package/lib/swipl/library/dialect/sicstus4/clpfd.pl +75 -0
  203. package/lib/swipl/library/dialect/sicstus4/file_systems.pl +413 -0
  204. package/lib/swipl/library/dialect/sicstus4/lists.pl +274 -0
  205. package/lib/swipl/library/dialect/sicstus4/ordsets.pl +54 -0
  206. package/lib/swipl/library/dialect/sicstus4/samsort.pl +86 -0
  207. package/lib/swipl/library/dialect/sicstus4/sets.pl +124 -0
  208. package/lib/swipl/library/dialect/sicstus4/sockets.pl +164 -0
  209. package/lib/swipl/library/dialect/sicstus4/system.pl +80 -0
  210. package/lib/swipl/library/dialect/sicstus4/terms.pl +89 -0
  211. package/lib/swipl/library/dialect/sicstus4/timeout.pl +43 -0
  212. package/lib/swipl/library/dialect/sicstus4/types.pl +103 -0
  213. package/lib/swipl/library/dialect/sicstus4.pl +200 -0
  214. package/lib/swipl/library/dialect/swi/syspred_options.pl +250 -0
  215. package/lib/swipl/library/dialect/xsb/README.md +20 -0
  216. package/lib/swipl/library/dialect/xsb/basics.pl +318 -0
  217. package/lib/swipl/library/dialect/xsb/consult.pl +87 -0
  218. package/lib/swipl/library/dialect/xsb/curr_sym.pl +57 -0
  219. package/lib/swipl/library/dialect/xsb/error_handler.pl +111 -0
  220. package/lib/swipl/library/dialect/xsb/gensym.pl +53 -0
  221. package/lib/swipl/library/dialect/xsb/gpp.pl +138 -0
  222. package/lib/swipl/library/dialect/xsb/intern.pl +48 -0
  223. package/lib/swipl/library/dialect/xsb/lists.pl +47 -0
  224. package/lib/swipl/library/dialect/xsb/machine.pl +295 -0
  225. package/lib/swipl/library/dialect/xsb/ordsets.pl +53 -0
  226. package/lib/swipl/library/dialect/xsb/setof.pl +54 -0
  227. package/lib/swipl/library/dialect/xsb/source.pl +308 -0
  228. package/lib/swipl/library/dialect/xsb/standard.pl +169 -0
  229. package/lib/swipl/library/dialect/xsb/storage.pl +70 -0
  230. package/lib/swipl/library/dialect/xsb/string.pl +76 -0
  231. package/lib/swipl/library/dialect/xsb/thread.pl +62 -0
  232. package/lib/swipl/library/dialect/xsb/timed_call.pl +158 -0
  233. package/lib/swipl/library/dialect/xsb.pl +688 -0
  234. package/lib/swipl/library/dialect/yap/README.TXT +8 -0
  235. package/lib/swipl/library/dialect/yap.pl +283 -0
  236. package/lib/swipl/library/dialect.pl +123 -0
  237. package/lib/swipl/library/dicts.pl +399 -0
  238. package/lib/swipl/library/dif.pl +426 -0
  239. package/lib/swipl/library/edinburgh.pl +138 -0
  240. package/lib/swipl/library/edit.pl +783 -0
  241. package/lib/swipl/library/error.pl +495 -0
  242. package/lib/swipl/library/exceptions.pl +231 -0
  243. package/lib/swipl/library/explain.pl +543 -0
  244. package/lib/swipl/library/ext/RDF/INDEX.pl +25 -0
  245. package/lib/swipl/library/ext/RDF/rdf.pl +450 -0
  246. package/lib/swipl/library/ext/RDF/rdf_parser.pl +649 -0
  247. package/lib/swipl/library/ext/RDF/rdf_triple.pl +448 -0
  248. package/lib/swipl/library/ext/RDF/rdf_write.pl +701 -0
  249. package/lib/swipl/library/ext/RDF/rewrite_term.pl +177 -0
  250. package/lib/swipl/library/ext/chr/chr/a_star.pl +80 -0
  251. package/lib/swipl/library/ext/chr/chr/binomialheap.pl +142 -0
  252. package/lib/swipl/library/ext/chr/chr/builtins.pl +629 -0
  253. package/lib/swipl/library/ext/chr/chr/chr_compiler_errors.pl +179 -0
  254. package/lib/swipl/library/ext/chr/chr/chr_compiler_options.pl +382 -0
  255. package/lib/swipl/library/ext/chr/chr/chr_compiler_utility.pl +338 -0
  256. package/lib/swipl/library/ext/chr/chr/chr_debug.pl +59 -0
  257. package/lib/swipl/library/ext/chr/chr/chr_hashtable_store.pl +425 -0
  258. package/lib/swipl/library/ext/chr/chr/chr_integertable_store.pl +139 -0
  259. package/lib/swipl/library/ext/chr/chr/chr_messages.pl +176 -0
  260. package/lib/swipl/library/ext/chr/chr/chr_op.pl +53 -0
  261. package/lib/swipl/library/ext/chr/chr/chr_runtime.pl +1016 -0
  262. package/lib/swipl/library/ext/chr/chr/chr_translate.pl +25424 -0
  263. package/lib/swipl/library/ext/chr/chr/clean_code.pl +252 -0
  264. package/lib/swipl/library/ext/chr/chr/find.pl +78 -0
  265. package/lib/swipl/library/ext/chr/chr/guard_entailment.pl +19432 -0
  266. package/lib/swipl/library/ext/chr/chr/listmap.pl +108 -0
  267. package/lib/swipl/library/ext/chr/chr/pairlist.pl +78 -0
  268. package/lib/swipl/library/ext/chr/chr.pl +686 -0
  269. package/lib/swipl/library/ext/clib/INDEX.pl +158 -0
  270. package/lib/swipl/library/ext/clib/cgi.pl +86 -0
  271. package/lib/swipl/library/ext/clib/crypt.pl +44 -0
  272. package/lib/swipl/library/ext/clib/filesex.pl +644 -0
  273. package/lib/swipl/library/ext/clib/hash_stream.pl +119 -0
  274. package/lib/swipl/library/ext/clib/mallocinfo.pl +138 -0
  275. package/lib/swipl/library/ext/clib/md5.pl +68 -0
  276. package/lib/swipl/library/ext/clib/memfile.pl +61 -0
  277. package/lib/swipl/library/ext/clib/process.pl +573 -0
  278. package/lib/swipl/library/ext/clib/prolog_server.pl +157 -0
  279. package/lib/swipl/library/ext/clib/prolog_stream.pl +80 -0
  280. package/lib/swipl/library/ext/clib/rlimit.pl +54 -0
  281. package/lib/swipl/library/ext/clib/sched.pl +85 -0
  282. package/lib/swipl/library/ext/clib/sha.pl +162 -0
  283. package/lib/swipl/library/ext/clib/socket.pl +1102 -0
  284. package/lib/swipl/library/ext/clib/streaminfo.pl +103 -0
  285. package/lib/swipl/library/ext/clib/streampool.pl +136 -0
  286. package/lib/swipl/library/ext/clib/syslog.pl +180 -0
  287. package/lib/swipl/library/ext/clib/time.pl +194 -0
  288. package/lib/swipl/library/ext/clib/udp_broadcast.pl +975 -0
  289. package/lib/swipl/library/ext/clib/uid.pl +220 -0
  290. package/lib/swipl/library/ext/clib/unix.pl +317 -0
  291. package/lib/swipl/library/ext/clib/uri.pl +530 -0
  292. package/lib/swipl/library/ext/clib/uuid.pl +207 -0
  293. package/lib/swipl/library/ext/http/http/INDEX.pl +266 -0
  294. package/lib/swipl/library/ext/http/http/README.md +34 -0
  295. package/lib/swipl/library/ext/http/http/ax.pl +189 -0
  296. package/lib/swipl/library/ext/http/http/dcg_basics.pl +49 -0
  297. package/lib/swipl/library/ext/http/http/graphql.pl +1367 -0
  298. package/lib/swipl/library/ext/http/http/html_decl.pl +416 -0
  299. package/lib/swipl/library/ext/http/http/html_head.pl +654 -0
  300. package/lib/swipl/library/ext/http/http/html_quasiquotations.pl +120 -0
  301. package/lib/swipl/library/ext/http/http/html_write.pl +1425 -0
  302. package/lib/swipl/library/ext/http/http/htmx.pl +139 -0
  303. package/lib/swipl/library/ext/http/http/http_authenticate.pl +364 -0
  304. package/lib/swipl/library/ext/http/http/http_client.pl +412 -0
  305. package/lib/swipl/library/ext/http/http/http_cookie.pl +245 -0
  306. package/lib/swipl/library/ext/http/http/http_cors.pl +176 -0
  307. package/lib/swipl/library/ext/http/http/http_digest.pl +820 -0
  308. package/lib/swipl/library/ext/http/http/http_dirindex.pl +296 -0
  309. package/lib/swipl/library/ext/http/http/http_dispatch.pl +1552 -0
  310. package/lib/swipl/library/ext/http/http/http_dyn_workers.pl +214 -0
  311. package/lib/swipl/library/ext/http/http/http_error.pl +126 -0
  312. package/lib/swipl/library/ext/http/http/http_exception.pl +225 -0
  313. package/lib/swipl/library/ext/http/http/http_files.pl +163 -0
  314. package/lib/swipl/library/ext/http/http/http_header.pl +2820 -0
  315. package/lib/swipl/library/ext/http/http/http_hook.pl +106 -0
  316. package/lib/swipl/library/ext/http/http/http_host.pl +204 -0
  317. package/lib/swipl/library/ext/http/http/http_load.pl +113 -0
  318. package/lib/swipl/library/ext/http/http/http_log.pl +738 -0
  319. package/lib/swipl/library/ext/http/http/http_multipart_plugin.pl +232 -0
  320. package/lib/swipl/library/ext/http/http/http_open.pl +1821 -0
  321. package/lib/swipl/library/ext/http/http/http_openid.pl +1561 -0
  322. package/lib/swipl/library/ext/http/http/http_parameters.pl +504 -0
  323. package/lib/swipl/library/ext/http/http/http_path.pl +380 -0
  324. package/lib/swipl/library/ext/http/http/http_proxy.pl +80 -0
  325. package/lib/swipl/library/ext/http/http/http_pwp.pl +351 -0
  326. package/lib/swipl/library/ext/http/http/http_redis_plugin.pl +332 -0
  327. package/lib/swipl/library/ext/http/http/http_server.pl +105 -0
  328. package/lib/swipl/library/ext/http/http/http_server_files.pl +126 -0
  329. package/lib/swipl/library/ext/http/http/http_server_health.pl +186 -0
  330. package/lib/swipl/library/ext/http/http/http_session.pl +1040 -0
  331. package/lib/swipl/library/ext/http/http/http_sgml_plugin.pl +137 -0
  332. package/lib/swipl/library/ext/http/http/http_stream.pl +376 -0
  333. package/lib/swipl/library/ext/http/http/http_unix_daemon.pl +989 -0
  334. package/lib/swipl/library/ext/http/http/http_wrapper.pl +559 -0
  335. package/lib/swipl/library/ext/http/http/hub.pl +600 -0
  336. package/lib/swipl/library/ext/http/http/js_write.pl +461 -0
  337. package/lib/swipl/library/ext/http/http/mimepack.pl +224 -0
  338. package/lib/swipl/library/ext/http/http/mimetype.pl +276 -0
  339. package/lib/swipl/library/ext/http/http/term_html.pl +797 -0
  340. package/lib/swipl/library/ext/http/http/thread_httpd.pl +1181 -0
  341. package/lib/swipl/library/ext/http/http/web/css/dirindex.css +24 -0
  342. package/lib/swipl/library/ext/http/http/web/css/openid.css +57 -0
  343. package/lib/swipl/library/ext/http/http/web/icons/back.png +0 -0
  344. package/lib/swipl/library/ext/http/http/web/icons/c.png +0 -0
  345. package/lib/swipl/library/ext/http/http/web/icons/compressed.png +0 -0
  346. package/lib/swipl/library/ext/http/http/web/icons/folder.png +0 -0
  347. package/lib/swipl/library/ext/http/http/web/icons/generic.png +0 -0
  348. package/lib/swipl/library/ext/http/http/web/icons/layout.png +0 -0
  349. package/lib/swipl/library/ext/http/http/web/icons/openid-logo-square.png +0 -0
  350. package/lib/swipl/library/ext/http/http/web/icons/openid-logo-tiny.png +0 -0
  351. package/lib/swipl/library/ext/http/http/websocket.pl +729 -0
  352. package/lib/swipl/library/ext/http/http/yadis.pl +205 -0
  353. package/lib/swipl/library/ext/json/INDEX.pl +36 -0
  354. package/lib/swipl/library/ext/json/http/INDEX.pl +16 -0
  355. package/lib/swipl/library/ext/json/http/http_json.pl +490 -0
  356. package/lib/swipl/library/ext/json/http/js_grammar.pl +53 -0
  357. package/lib/swipl/library/ext/json/http/json.pl +48 -0
  358. package/lib/swipl/library/ext/json/http/json_convert.pl +48 -0
  359. package/lib/swipl/library/ext/json/json.pl +1215 -0
  360. package/lib/swipl/library/ext/json/json_convert.pl +681 -0
  361. package/lib/swipl/library/ext/json/json_grammar.pl +349 -0
  362. package/lib/swipl/library/ext/json/json_rpc_client.pl +423 -0
  363. package/lib/swipl/library/ext/json/json_rpc_common.pl +104 -0
  364. package/lib/swipl/library/ext/json/json_rpc_server.pl +489 -0
  365. package/lib/swipl/library/ext/json/json_schema.pl +2111 -0
  366. package/lib/swipl/library/ext/nlp/INDEX.pl +15 -0
  367. package/lib/swipl/library/ext/nlp/double_metaphone.pl +86 -0
  368. package/lib/swipl/library/ext/nlp/isub.pl +162 -0
  369. package/lib/swipl/library/ext/nlp/porter_stem.pl +50 -0
  370. package/lib/swipl/library/ext/nlp/snowball.pl +97 -0
  371. package/lib/swipl/library/ext/pcre/INDEX.pl +17 -0
  372. package/lib/swipl/library/ext/pcre/pcre.pl +974 -0
  373. package/lib/swipl/library/ext/plunit/INDEX.pl +20 -0
  374. package/lib/swipl/library/ext/plunit/plunit.pl +2631 -0
  375. package/lib/swipl/library/ext/plunit/test_wizard.pl +249 -0
  376. package/lib/swipl/library/ext/semweb/semweb/INDEX.pl +288 -0
  377. package/lib/swipl/library/ext/semweb/semweb/rdf11.pl +2106 -0
  378. package/lib/swipl/library/ext/semweb/semweb/rdf11_containers.pl +299 -0
  379. package/lib/swipl/library/ext/semweb/semweb/rdf_cache.pl +278 -0
  380. package/lib/swipl/library/ext/semweb/semweb/rdf_compare.pl +132 -0
  381. package/lib/swipl/library/ext/semweb/semweb/rdf_db.pl +3468 -0
  382. package/lib/swipl/library/ext/semweb/semweb/rdf_edit.pl +1145 -0
  383. package/lib/swipl/library/ext/semweb/semweb/rdf_http_plugin.pl +274 -0
  384. package/lib/swipl/library/ext/semweb/semweb/rdf_library.pl +1021 -0
  385. package/lib/swipl/library/ext/semweb/semweb/rdf_litindex.pl +1035 -0
  386. package/lib/swipl/library/ext/semweb/semweb/rdf_ntriples.pl +422 -0
  387. package/lib/swipl/library/ext/semweb/semweb/rdf_persistency.pl +1576 -0
  388. package/lib/swipl/library/ext/semweb/semweb/rdf_portray.pl +182 -0
  389. package/lib/swipl/library/ext/semweb/semweb/rdf_prefixes.pl +681 -0
  390. package/lib/swipl/library/ext/semweb/semweb/rdf_sandbox.pl +153 -0
  391. package/lib/swipl/library/ext/semweb/semweb/rdf_turtle.pl +54 -0
  392. package/lib/swipl/library/ext/semweb/semweb/rdf_turtle_write.pl +1587 -0
  393. package/lib/swipl/library/ext/semweb/semweb/rdf_zlib_plugin.pl +52 -0
  394. package/lib/swipl/library/ext/semweb/semweb/rdfa.pl +1510 -0
  395. package/lib/swipl/library/ext/semweb/semweb/rdfs.pl +475 -0
  396. package/lib/swipl/library/ext/semweb/semweb/sparql_client.pl +643 -0
  397. package/lib/swipl/library/ext/semweb/semweb/turtle.pl +455 -0
  398. package/lib/swipl/library/ext/sgml/DTD/HTML4.dcl +88 -0
  399. package/lib/swipl/library/ext/sgml/DTD/HTML4.dtd +1092 -0
  400. package/lib/swipl/library/ext/sgml/DTD/HTML4.soc +6 -0
  401. package/lib/swipl/library/ext/sgml/DTD/HTML5.dtd +906 -0
  402. package/lib/swipl/library/ext/sgml/DTD/HTMLlat1.ent +195 -0
  403. package/lib/swipl/library/ext/sgml/DTD/HTMLspec.ent +77 -0
  404. package/lib/swipl/library/ext/sgml/DTD/HTMLsym.ent +241 -0
  405. package/lib/swipl/library/ext/sgml/INDEX.pl +64 -0
  406. package/lib/swipl/library/ext/sgml/c14n2.pl +203 -0
  407. package/lib/swipl/library/ext/sgml/iso_639.pl +631 -0
  408. package/lib/swipl/library/ext/sgml/pwp.pl +705 -0
  409. package/lib/swipl/library/ext/sgml/sgml.pl +815 -0
  410. package/lib/swipl/library/ext/sgml/sgml_write.pl +1003 -0
  411. package/lib/swipl/library/ext/sgml/xpath.pl +620 -0
  412. package/lib/swipl/library/ext/sgml/xsdp_types.pl +232 -0
  413. package/lib/swipl/library/ext/ssl/INDEX.pl +60 -0
  414. package/lib/swipl/library/ext/ssl/crypto.pl +1015 -0
  415. package/lib/swipl/library/ext/ssl/http/INDEX.pl +5 -0
  416. package/lib/swipl/library/ext/ssl/http/http_ssl_plugin.pl +296 -0
  417. package/lib/swipl/library/ext/ssl/saml.pl +609 -0
  418. package/lib/swipl/library/ext/ssl/ssl.pl +647 -0
  419. package/lib/swipl/library/ext/ssl/xmldsig.pl +391 -0
  420. package/lib/swipl/library/ext/ssl/xmlenc.pl +354 -0
  421. package/lib/swipl/library/ext/zlib/INDEX.pl +8 -0
  422. package/lib/swipl/library/ext/zlib/zlib.pl +112 -0
  423. package/lib/swipl/library/fastrw.pl +105 -0
  424. package/lib/swipl/library/files.pl +80 -0
  425. package/lib/swipl/library/gensym.pl +111 -0
  426. package/lib/swipl/library/git.pl +1027 -0
  427. package/lib/swipl/library/hashtable.pl +365 -0
  428. package/lib/swipl/library/heaps.pl +252 -0
  429. package/lib/swipl/library/hotfix.pl +239 -0
  430. package/lib/swipl/library/http/jquery.pl +103 -0
  431. package/lib/swipl/library/http/web/js/jquery-3.6.0.min.js +2 -0
  432. package/lib/swipl/library/increval.pl +217 -0
  433. package/lib/swipl/library/intercept.pl +263 -0
  434. package/lib/swipl/library/iostream.pl +237 -0
  435. package/lib/swipl/library/iri_scheme/file.pl +70 -0
  436. package/lib/swipl/library/lazy_lists.pl +481 -0
  437. package/lib/swipl/library/listing.pl +1362 -0
  438. package/lib/swipl/library/lists.pl +860 -0
  439. package/lib/swipl/library/lynx/INDEX.pl +14 -0
  440. package/lib/swipl/library/lynx/format.pl +380 -0
  441. package/lib/swipl/library/lynx/html_style.pl +129 -0
  442. package/lib/swipl/library/lynx/html_text.pl +865 -0
  443. package/lib/swipl/library/lynx/pldoc_style.pl +87 -0
  444. package/lib/swipl/library/macros.pl +451 -0
  445. package/lib/swipl/library/main.pl +1200 -0
  446. package/lib/swipl/library/make.pl +197 -0
  447. package/lib/swipl/library/modules.pl +129 -0
  448. package/lib/swipl/library/nb_rbtrees.pl +267 -0
  449. package/lib/swipl/library/nb_set.pl +203 -0
  450. package/lib/swipl/library/obfuscate.pl +115 -0
  451. package/lib/swipl/library/occurs.pl +241 -0
  452. package/lib/swipl/library/operators.pl +182 -0
  453. package/lib/swipl/library/option.pl +388 -0
  454. package/lib/swipl/library/optparse.pl +966 -0
  455. package/lib/swipl/library/ordsets.pl +518 -0
  456. package/lib/swipl/library/oset.pl +160 -0
  457. package/lib/swipl/library/pairs.pl +187 -0
  458. package/lib/swipl/library/persistency.pl +713 -0
  459. package/lib/swipl/library/pio.pl +47 -0
  460. package/lib/swipl/library/portray_text.pl +277 -0
  461. package/lib/swipl/library/pprint.pl +940 -0
  462. package/lib/swipl/library/predicate_options.pl +975 -0
  463. package/lib/swipl/library/prolog_autoload.pl +233 -0
  464. package/lib/swipl/library/prolog_breakpoints.pl +396 -0
  465. package/lib/swipl/library/prolog_clause.pl +1104 -0
  466. package/lib/swipl/library/prolog_code.pl +416 -0
  467. package/lib/swipl/library/prolog_codewalk.pl +1248 -0
  468. package/lib/swipl/library/prolog_colour.pl +3301 -0
  469. package/lib/swipl/library/prolog_colour.qlf +0 -0
  470. package/lib/swipl/library/prolog_config.pl +154 -0
  471. package/lib/swipl/library/prolog_coverage.pl +1333 -0
  472. package/lib/swipl/library/prolog_debug.pl +404 -0
  473. package/lib/swipl/library/prolog_deps.pl +675 -0
  474. package/lib/swipl/library/prolog_evaluable.pl +234 -0
  475. package/lib/swipl/library/prolog_format.pl +219 -0
  476. package/lib/swipl/library/prolog_history.pl +161 -0
  477. package/lib/swipl/library/prolog_jiti.pl +333 -0
  478. package/lib/swipl/library/prolog_locale.pl +61 -0
  479. package/lib/swipl/library/prolog_metainference.pl +307 -0
  480. package/lib/swipl/library/prolog_pack.pl +3906 -0
  481. package/lib/swipl/library/prolog_profile.pl +346 -0
  482. package/lib/swipl/library/prolog_qlfmake.pl +533 -0
  483. package/lib/swipl/library/prolog_source.pl +1188 -0
  484. package/lib/swipl/library/prolog_stack.pl +794 -0
  485. package/lib/swipl/library/prolog_trace.pl +365 -0
  486. package/lib/swipl/library/prolog_versions.pl +347 -0
  487. package/lib/swipl/library/prolog_wrap.pl +164 -0
  488. package/lib/swipl/library/prolog_xref.pl +3090 -0
  489. package/lib/swipl/library/prolog_xref.qlf +0 -0
  490. package/lib/swipl/library/pure_input.pl +266 -0
  491. package/lib/swipl/library/qpforeign.pl +695 -0
  492. package/lib/swipl/library/qsave.pl +1516 -0
  493. package/lib/swipl/library/quasi_quotations.pl +300 -0
  494. package/lib/swipl/library/quintus.pl +437 -0
  495. package/lib/swipl/library/random.pl +459 -0
  496. package/lib/swipl/library/rbtrees.pl +1153 -0
  497. package/lib/swipl/library/readln.pl +256 -0
  498. package/lib/swipl/library/readutil.pl +304 -0
  499. package/lib/swipl/library/record.pl +544 -0
  500. package/lib/swipl/library/rwlocks.pl +172 -0
  501. package/lib/swipl/library/sandbox.pl +1384 -0
  502. package/lib/swipl/library/semweb/dc.rdfs +198 -0
  503. package/lib/swipl/library/semweb/eor.rdfs +95 -0
  504. package/lib/swipl/library/semweb/owl.owl +287 -0
  505. package/lib/swipl/library/semweb/rdf_library.ttl +90 -0
  506. package/lib/swipl/library/semweb/rdfs.rdfs +251 -0
  507. package/lib/swipl/library/settings.pl +755 -0
  508. package/lib/swipl/library/shell.pl +462 -0
  509. package/lib/swipl/library/shlib.pl +670 -0
  510. package/lib/swipl/library/solution_sequences.pl +439 -0
  511. package/lib/swipl/library/sort.pl +119 -0
  512. package/lib/swipl/library/statistics.pl +541 -0
  513. package/lib/swipl/library/streams.pl +118 -0
  514. package/lib/swipl/library/strings.pl +469 -0
  515. package/lib/swipl/library/system.pl +95 -0
  516. package/lib/swipl/library/tables.pl +381 -0
  517. package/lib/swipl/library/tableutil.pl +771 -0
  518. package/lib/swipl/library/tabling.pl +42 -0
  519. package/lib/swipl/library/terms.pl +457 -0
  520. package/lib/swipl/library/theme/auto.pl +61 -0
  521. package/lib/swipl/library/theme/dark.pl +455 -0
  522. package/lib/swipl/library/theme/light.pl +45 -0
  523. package/lib/swipl/library/thread.pl +810 -0
  524. package/lib/swipl/library/thread_pool.pl +508 -0
  525. package/lib/swipl/library/threadutil.pl +574 -0
  526. package/lib/swipl/library/tty.pl +316 -0
  527. package/lib/swipl/library/ugraphs.pl +644 -0
  528. package/lib/swipl/library/unicode/INDEX.pl +6 -0
  529. package/lib/swipl/library/unicode/blocks.pl +414 -0
  530. package/lib/swipl/library/url.pl +1129 -0
  531. package/lib/swipl/library/utf8.pl +145 -0
  532. package/lib/swipl/library/varnumbers.pl +221 -0
  533. package/lib/swipl/library/vm.pl +251 -0
  534. package/lib/swipl/library/wfs.pl +205 -0
  535. package/lib/swipl/library/when.pl +263 -0
  536. package/lib/swipl/library/writef.pl +278 -0
  537. package/lib/swipl/library/www_browser.pl +251 -0
  538. package/lib/swipl/library/yall.pl +574 -0
  539. package/lib/swipl/library/zip.pl +211 -0
  540. package/lib/swipl/swipl.home +1 -0
  541. package/lib/vendor/libcrypto.so.3 +0 -0
  542. package/lib/vendor/libpcre2-8.so.0 +0 -0
  543. package/lib/vendor/libssl.so.3 +0 -0
  544. package/lib/vendor/libz.so.1 +0 -0
  545. package/licenses/OpenSSL-LICENSE.txt +177 -0
  546. package/licenses/PCRE2-COPYING +5 -0
  547. package/licenses/README.md +12 -0
  548. package/licenses/SWI-Prolog-LICENSE +41 -0
  549. package/licenses/zlib-LICENSE +22 -0
  550. package/package.json +27 -0
@@ -0,0 +1,193 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ Author: Jan Wielemaker
4
+ E-mail: J.Wielemaker@vu.nl
5
+ WWW: www.swi-prolog.org
6
+ Copyright (c) 2013-2015, University of Amsterdam
7
+ VU University Amsterdam
8
+ All rights reserved.
9
+
10
+ Redistribution and use in source and binary forms, with or without
11
+ modification, are permitted provided that the following conditions
12
+ are met:
13
+
14
+ 1. Redistributions of source code must retain the above copyright
15
+ notice, this list of conditions and the following disclaimer.
16
+
17
+ 2. Redistributions in binary form must reproduce the above copyright
18
+ notice, this list of conditions and the following disclaimer in
19
+ the documentation and/or other materials provided with the
20
+ distribution.
21
+
22
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
+ POSSIBILITY OF SUCH DAMAGE.
34
+ */
35
+
36
+ :- module('$dicts',
37
+ [ '.'/3 % +Left, +Right, -Result
38
+ ]).
39
+
40
+ %! .(+R, +L, -Result)
41
+ %
42
+ % Evaluate dot expressions. Note that '$get_dict_ex' fails if the
43
+ % first argument is not a dict or the second is not a valid key or
44
+ % unbound.
45
+
46
+ .(Data, Func, Value) :-
47
+ ( '$get_dict_ex'(Func, Data, V0)
48
+ *-> Value = V0
49
+ ; is_dict(Data, Tag)
50
+ -> eval_dict_function(Func, Tag, Data, Value)
51
+ ; is_list(Data)
52
+ -> ( is_dict_func(Func)
53
+ -> dict_create(Dict, _, Data),
54
+ '$get_dict_ex'(Func, Dict, Value)
55
+ ; '$type_error'(atom, Func)
56
+ )
57
+ ; '$type_error'(dict, Data)
58
+ ).
59
+
60
+ is_dict_func(Key) :- atomic(Key), !.
61
+ is_dict_func(Var) :- var(Var), !.
62
+ is_dict_func(get(_)).
63
+ is_dict_func(get(_,_)).
64
+ is_dict_func(put(_)).
65
+ is_dict_func(put(_,_)).
66
+
67
+
68
+ %! eval_dict_function(+Func, +Tag, +Dict, -Value)
69
+ %
70
+ % Test for predefined functions on dicts or evaluate a user-defined
71
+ % function.
72
+
73
+ eval_dict_function(get(Key), _, Dict, Value) :-
74
+ !,
75
+ ( atomic(Key)
76
+ -> get_dict(Key, Dict, Value)
77
+ ; var(Key)
78
+ -> get_dict(Key, Dict, Value)
79
+ ; get_dict_path(Key, Dict, Value)
80
+ ).
81
+ eval_dict_function(get(Key, Default), _, Dict, Value) :-
82
+ !,
83
+ ( ( atomic(Key)
84
+ -> get_dict(Key, Dict, Value0)
85
+ ; var(Key)
86
+ -> get_dict(Key, Dict, Value0)
87
+ ; get_dict_path(Key, Dict, Value0)
88
+ )
89
+ *-> Value = Value0
90
+ ; Value = Default
91
+ ).
92
+ eval_dict_function(put(Key, Value), _, Dict, NewDict) :-
93
+ !,
94
+ ( atomic(Key)
95
+ -> put_dict(Key, Dict, Value, NewDict)
96
+ ; put_dict_path(Key, Dict, Value, NewDict)
97
+ ).
98
+ eval_dict_function(put(New), _, Dict, NewDict) :-
99
+ !,
100
+ put_dict(New, Dict, NewDict).
101
+ eval_dict_function(Func, Tag, Dict, Value) :-
102
+ call(Tag:Func, Dict, Value).
103
+
104
+
105
+ %! put_dict_path(+KeyPath, +Dict, +Value, -NewDict)
106
+ %
107
+ % Add/replace a value according to a path definition. Path
108
+ % segments are separated using '/'.
109
+
110
+ put_dict_path(Key, Dict, Value, NewDict) :-
111
+ atom(Key),
112
+ !,
113
+ put_dict(Key, Dict, Value, NewDict).
114
+ put_dict_path(Path, Dict, Value, NewDict) :-
115
+ put_dict_path(Path, Dict, _Old, NewDict, Value).
116
+
117
+ put_dict_path(Path, _, _, _, _) :-
118
+ var(Path),
119
+ !,
120
+ '$instantiation_error'(Path).
121
+ put_dict_path(Path/Key, Dict, Old, NewDict, New) :-
122
+ !,
123
+ put_dict_path(Path, Dict, OldD, NewDict, NewD),
124
+ ( get_dict(Key, OldD, Old, NewD, New),
125
+ is_dict(Old)
126
+ -> true
127
+ ; Old = #{},
128
+ put_dict(Key, OldD, New, NewD)
129
+ ).
130
+ put_dict_path(Key, Dict, Old, NewDict, New) :-
131
+ get_dict(Key, Dict, Old, NewDict, New),
132
+ is_dict(Old),
133
+ !.
134
+ put_dict_path(Key, Dict, #{}, NewDict, New) :-
135
+ put_dict(Key, Dict, New, NewDict).
136
+
137
+ %! get_dict_path(+Path, +Dict, -Value)
138
+
139
+ get_dict_path(Path, Dict, Value) :-
140
+ compound(Path),
141
+ Path = (Path0/Key),
142
+ !,
143
+ get_dict_path(Path0, Dict, Dict1),
144
+ get_dict(Key, Dict1, Value).
145
+ get_dict_path(Key, Dict, Value) :-
146
+ get_dict(Key, Dict, Value).
147
+
148
+
149
+ /*******************************
150
+ * REGISTER *
151
+ *******************************/
152
+
153
+ %! system:term_expansion(+TermIn, -TermOut)
154
+ %
155
+ % Support := syntax for defining new functions.
156
+ %
157
+ % @tbd Modify to term_expansion/4, including position
158
+ % management
159
+
160
+ % note that we need FHead because using a term there rewrites the
161
+ % clauses using function expansion.
162
+
163
+ expand_dict_function((QFHead := V0 :- Body), (QHead :- Body, Eval)) :-
164
+ fqhead(QFHead, FHead, Head, QHead),
165
+ compound(FHead),
166
+ FHead =.. [.,R,M],
167
+ callable(M),
168
+ !,
169
+ '$expand':replace_functions(V0, Eval, V, _Ctx),
170
+ compound_name_arguments(M, Name, Args0),
171
+ '$append'(Args0, [R,V], Args),
172
+ compound_name_arguments(Head, Name, Args).
173
+ expand_dict_function((QFHead := V0), (QHead :- Eval)) :-
174
+ fqhead(QFHead, FHead, Head, QHead),
175
+ compound(FHead),
176
+ FHead =.. [.,R,M],
177
+ callable(M),
178
+ !,
179
+ '$expand':replace_functions(V0, Eval, V, _Ctx),
180
+ compound_name_arguments(M, Name, Args0),
181
+ '$append'(Args0, [R,V], Args),
182
+ compound_name_arguments(Head, Name, Args).
183
+
184
+ fqhead(M:FHead, FHead, Head, M:Head) :- !.
185
+ fqhead(FHead, FHead, Head, Head).
186
+
187
+
188
+ system:term_expansion(FDecl, Clause) :-
189
+ expand_dict_function(FDecl, Clause).
190
+ system:term_expansion(M:FDecl, QClause) :-
191
+ expand_dict_function(FDecl, Clause),
192
+ !,
193
+ QClause = M:Clause.
@@ -0,0 +1,485 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ Author: Jan Wielemaker
4
+ E-mail: J.Wielemaker@vu.nl
5
+ WWW: http://www.swi-prolog.org
6
+ Copyright (c) 1985-2009, University of Amsterdam
7
+ All rights reserved.
8
+
9
+ Redistribution and use in source and binary forms, with or without
10
+ modification, are permitted provided that the following conditions
11
+ are met:
12
+
13
+ 1. Redistributions of source code must retain the above copyright
14
+ notice, this list of conditions and the following disclaimer.
15
+
16
+ 2. Redistributions in binary form must reproduce the above copyright
17
+ notice, this list of conditions and the following disclaimer in
18
+ the documentation and/or other materials provided with the
19
+ distribution.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
+ POSSIBILITY OF SUCH DAMAGE.
33
+ */
34
+
35
+ :- module('$dwim',
36
+ [ dwim_predicate/2,
37
+ '$dwim_correct_goal'/3,
38
+ '$find_predicate'/2,
39
+ '$similar_module'/2
40
+ ]).
41
+
42
+ :- meta_predicate
43
+ dwim_predicate(:, -),
44
+ '$dwim_correct_goal'(:, +, -),
45
+ '$similar_module'(:, -),
46
+ '$find_predicate'(:, -).
47
+
48
+ %! '$dwim_correct_goal'(:Goal, +Bindings, -Corrected)
49
+ %
50
+ % Correct a goal (normally typed by the user) in the `Do What I
51
+ % Mean' sense. Ask the user to confirm if a unique correction can
52
+ % be found.
53
+ %
54
+ % @error existence_error(procedure, PI) if the goal cannot be
55
+ % corrected.
56
+
57
+ '$dwim_correct_goal'(M:Goal, Bindings, Corrected) :-
58
+ correct_goal(Goal, M, Bindings, Corrected).
59
+
60
+ correct_goal(Goal, M, _, M:Goal) :-
61
+ var(Goal),
62
+ !.
63
+ correct_goal(Module:Goal, _, _, Module:Goal) :-
64
+ ( var(Module)
65
+ ; var(Goal)
66
+ ),
67
+ !.
68
+ correct_goal(Vars^Goal0, M, Bindings, Vars^Goal) :- % setof/bagof
69
+ !,
70
+ correct_goal(Goal0, M, Bindings, Goal).
71
+ correct_goal(Module:Goal0, _, Bindings, Module:Goal) :-
72
+ current_predicate(_, Module:Goal0),
73
+ !,
74
+ correct_meta_arguments(Goal0, Module, Bindings, Goal).
75
+ correct_goal(Goal0, M, Bindings, M:Goal) :- % is defined
76
+ current_predicate(_, M:Goal0),
77
+ !,
78
+ correct_meta_arguments(Goal0, M, Bindings, Goal).
79
+ correct_goal(Goal0, M, Bindings, Goal) :- % correct the goal
80
+ dwim_predicate_list(M:Goal0, DWIMs0),
81
+ !,
82
+ principal_predicates(DWIMs0, M, DWIMs),
83
+ correct_literal(M:Goal0, Bindings, DWIMs, Goal1),
84
+ correct_meta_arguments(Goal1, M, Bindings, Goal).
85
+ correct_goal(Goal, Module, _, NewGoal) :- % try to autoload
86
+ \+ current_prolog_flag(Module:unknown, fail),
87
+ callable(Goal),
88
+ !,
89
+ callable_name_arity(Goal, Name, Arity),
90
+ '$undefined_procedure'(Module, Name, Arity, Action),
91
+ ( Action == error
92
+ -> existence_error(Module:Name/Arity),
93
+ NewGoal = fail
94
+ ; Action == retry
95
+ -> NewGoal = Goal
96
+ ; NewGoal = fail
97
+ ).
98
+ correct_goal(Goal, M, _, M:Goal).
99
+
100
+ callable_name_arity(Goal, Name, Arity) :-
101
+ compound(Goal),
102
+ !,
103
+ compound_name_arity(Goal, Name, Arity).
104
+ callable_name_arity(Goal, Goal, 0) :-
105
+ atom(Goal).
106
+
107
+ existence_error(PredSpec) :-
108
+ strip_module(PredSpec, M, _),
109
+ current_prolog_flag(M:unknown, Unknown),
110
+ dwim_existence_error(Unknown, PredSpec).
111
+
112
+ dwim_existence_error(fail, _) :- !.
113
+ dwim_existence_error(Unknown, PredSpec) :-
114
+ '$current_typein_module'(TypeIn),
115
+ unqualify_if_context(TypeIn, PredSpec, Spec),
116
+ ( no_context(Spec)
117
+ -> true
118
+ ; Context = context(toplevel, 'DWIM could not correct goal')
119
+ ),
120
+ Error = error(existence_error(procedure, Spec), Context),
121
+ ( Unknown == error
122
+ -> throw(Error)
123
+ ; print_message(warning, Error)
124
+ ).
125
+
126
+ %! no_context(+PI) is semidet.
127
+ %
128
+ % True if we should omit the DWIM message because messages.pl
129
+ % gives an additional explanation.
130
+
131
+ no_context((^)/2).
132
+ no_context((:-)/2).
133
+ no_context((:-)/1).
134
+ no_context((?-)/1).
135
+
136
+
137
+ %! correct_meta_arguments(:Goal, +Module, +Bindings, -Final) is det.
138
+ %
139
+ % Correct possible meta-arguments. This performs a recursive check
140
+ % on meta-arguments specified as `0' using :- meta_predicate/1. As
141
+ % a special exception, the arment of call/1 is not checked, so you
142
+ % can use call(X) as an escape from the DWIM system.
143
+
144
+ correct_meta_arguments(call(Goal), _, _, call(Goal)) :- !.
145
+ correct_meta_arguments(Goal0, M, Bindings, Goal) :-
146
+ predicate_property(M:Goal0, meta_predicate(MHead)),
147
+ !,
148
+ functor(Goal0, Name, Arity),
149
+ functor(Goal, Name, Arity),
150
+ correct_margs(0, Arity, MHead, Goal0, Goal, M, Bindings).
151
+ correct_meta_arguments(Goal, _, _, Goal).
152
+
153
+ correct_margs(Arity, Arity, _, _, _, _, _) :- !.
154
+ correct_margs(A, Arity, MHead, GoalIn, GoalOut, M, Bindings) :-
155
+ I is A+1,
156
+ arg(I, GoalIn, Ain),
157
+ arg(I, GoalOut, AOut),
158
+ ( arg(I, MHead, 0)
159
+ -> correct_goal(Ain, M, Bindings, AOut0),
160
+ unqualify_if_context(M, AOut0, AOut)
161
+ ; AOut = Ain
162
+ ),
163
+ correct_margs(I, Arity, MHead, GoalIn, GoalOut, M, Bindings).
164
+
165
+
166
+ %! correct_literal(:Goal, +Bindings, +DWIMs, -Corrected) is semidet.
167
+ %
168
+ % Correct a single literal. DWIMs is a list of heads that can
169
+ % replace the head in Goal.
170
+
171
+ correct_literal(Goal, Bindings, [Dwim], DwimGoal) :-
172
+ strip_module(Goal, CM, G1),
173
+ strip_module(Dwim, DM, G2),
174
+ callable_name_arity(G1, _, Arity),
175
+ callable_name_arity(G2, Name, Arity), % same arity: we can replace arguments
176
+ !,
177
+ change_functor_name(G1, Name, G2),
178
+ ( ( current_predicate(CM:Name/Arity)
179
+ -> ConfirmGoal = G2,
180
+ DwimGoal = CM:G2
181
+ ; '$prefix_module'(DM, CM, G2, ConfirmGoal),
182
+ DwimGoal = ConfirmGoal
183
+ ),
184
+ goal_name(ConfirmGoal, Bindings, String),
185
+ '$confirm'(dwim_correct(String))
186
+ -> true
187
+ ; DwimGoal = Goal
188
+ ).
189
+ correct_literal(Goal, Bindings, Dwims, NewGoal) :-
190
+ strip_module(Goal, _, G1),
191
+ callable_name_arity(G1, _, Arity),
192
+ include_arity(Dwims, Arity, [Dwim]),
193
+ !,
194
+ correct_literal(Goal, Bindings, [Dwim], NewGoal).
195
+ correct_literal(Goal, _, Dwims, _) :-
196
+ print_message(error, dwim_undefined(Goal, Dwims)),
197
+ fail.
198
+
199
+ change_functor_name(Term1, Name2, Term2) :-
200
+ compound(Term1),
201
+ !,
202
+ compound_name_arguments(Term1, _, Arguments),
203
+ compound_name_arguments(Term2, Name2, Arguments).
204
+ change_functor_name(Term1, Name2, Name2) :-
205
+ atom(Term1).
206
+
207
+ include_arity([], _, []).
208
+ include_arity([H|T0], Arity, [H|T]) :-
209
+ strip_module(H, _, G),
210
+ functor(G, _, Arity),
211
+ !,
212
+ include_arity(T0, Arity, T).
213
+ include_arity([_|T0], Arity, T) :-
214
+ include_arity(T0, Arity, T).
215
+
216
+
217
+ % goal_name(+Goal, +Bindings, -Name)
218
+ %
219
+ % Transform Goal into a readable format by binding its variables.
220
+
221
+ goal_name(Goal, Bindings, String) :-
222
+ State = s(_),
223
+ ( bind_vars(Bindings),
224
+ numbervars(Goal, 0, _, [singletons(true), attvar(skip)]),
225
+ format(string(S), '~q', [Goal]),
226
+ nb_setarg(1, State, S),
227
+ fail
228
+ ; arg(1, State, String)
229
+ ).
230
+
231
+ bind_vars([]).
232
+ bind_vars([Name=Var|T]) :-
233
+ Var = '$VAR'(Name), % portray prints Name
234
+ !,
235
+ bind_vars(T).
236
+ bind_vars([_|T]) :-
237
+ bind_vars(T).
238
+
239
+
240
+ %! '$find_predicate'(:Spec, -PIs:list(pi)) is det.
241
+ %
242
+ % Unify `List' with a list of predicate indicators that match the
243
+ % specification `Spec'. `Spec' is a term Name/Arity, a ``Head'',
244
+ % or just an atom. The latter refers to all predicate of that name
245
+ % with arbitrary arity. `Do What I Mean' correction is done. If
246
+ % the requested module is `user' predicates residing in any module
247
+ % will be considered matching.
248
+ %
249
+ % @error existence_error(procedure, Spec) if no matching predicate
250
+ % can be found.
251
+
252
+ '$find_predicate'(M:S, List) :-
253
+ name_arity(S, Name, Arity),
254
+ '$current_typein_module'(TypeIn),
255
+ ( M == TypeIn, % I.e. unspecified default module
256
+ \+ module_property(M, class(temporary))
257
+ -> true
258
+ ; Module = M
259
+ ),
260
+ find_predicate(Module, Name, Arity, L0),
261
+ !,
262
+ sort(L0, L1),
263
+ principal_pis(L1, Module, List).
264
+ '$find_predicate'(_:S, List) :-
265
+ name_arity(S, Name, Arity),
266
+ findall(Name/Arity,
267
+ '$in_library'(Name, Arity, _Path), List),
268
+ List \== [],
269
+ !.
270
+ '$find_predicate'(Spec, _) :-
271
+ existence_error(Spec),
272
+ fail.
273
+
274
+ find_predicate(Module, Name, Arity, VList) :-
275
+ findall(Head, find_predicate_(Module, Name, Arity, Head), VList),
276
+ VList \== [],
277
+ !.
278
+ find_predicate(Module, Name, Arity, Pack) :-
279
+ findall(PI, find_sim_pred(Module, Name, Arity, PI), List),
280
+ pack(List, Module, Arity, Packs),
281
+ '$member'(Dwim-Pack, Packs),
282
+ '$confirm'(dwim_correct(Dwim)),
283
+ !.
284
+
285
+ unqualify_if_context(_, X, X) :-
286
+ var(X),
287
+ !.
288
+ unqualify_if_context(C, C2:X, X) :-
289
+ C == C2,
290
+ !.
291
+ unqualify_if_context(_, X, X) :- !.
292
+
293
+ %! pack(+PIs, +Module, +Arity, +Context, -Packs)
294
+ %
295
+ % Pack the list of heads into packets, consisting of the corrected
296
+ % specification and a list of heads satisfying this specification.
297
+
298
+ pack([], _, _, []) :- !.
299
+ pack([M:T|Rest], Module, Arity, [Name-[M:T|R]|Packs]) :-
300
+ pack_name(M:T, Module, Arity, Name),
301
+ pack_(Module, Arity, Name, Rest, R, NewRest),
302
+ pack(NewRest, Module, Arity, Packs).
303
+
304
+ pack_(Module, Arity, Name, List, [H|R], Rest) :-
305
+ '$select'(M:PI, List, R0),
306
+ pack_name(M:PI, Module, Arity, Name),
307
+ !,
308
+ '$prefix_module'(M, C, PI, H),
309
+ pack_(Module, Arity, Name, C, R0, R, Rest).
310
+ pack_(_, _, _, _, Rest, [], Rest).
311
+
312
+ pack_name(_:Name/_, M, A, Name) :-
313
+ var(M), var(A),
314
+ !.
315
+ pack_name(M:Name/_, _, A, M:Name) :-
316
+ var(A),
317
+ !.
318
+ pack_name(_:PI, M, _, PI) :-
319
+ var(M),
320
+ !.
321
+ pack_name(QPI, _, _, QPI).
322
+
323
+
324
+ find_predicate_(Module, Name, Arity, Module:Name/Arity) :-
325
+ current_module(Module),
326
+ current_predicate(Name, Module:Term),
327
+ functor(Term, Name, Arity).
328
+
329
+ find_sim_pred(M, Name, Arity, Module:DName/DArity) :-
330
+ sim_module(M, Module),
331
+ '$dwim_predicate'(Module:Name, Term),
332
+ functor(Term, DName, DArity),
333
+ sim_arity(Arity, DArity).
334
+
335
+ sim_module(M, Module) :-
336
+ var(M),
337
+ !,
338
+ current_module(Module).
339
+ sim_module(M, M) :-
340
+ current_module(M),
341
+ !.
342
+ sim_module(M, Module) :-
343
+ current_module(Module),
344
+ dwim_match(M, Module).
345
+
346
+ sim_arity(A, _) :- var(A), !.
347
+ sim_arity(A, D) :- abs(A-D) < 2.
348
+
349
+ %! name_arity(+Spec, -Name, -Arity)
350
+ %
351
+ % Obtain the name and arity of a predicate specification. Warn if
352
+ % this is not a legal specification.
353
+
354
+ name_arity(Atom, Atom, _) :-
355
+ atom(Atom),
356
+ !.
357
+ name_arity(Name/Arity, Name, Arity) :- !.
358
+ name_arity(Name//DCGArity, Name, Arity) :-
359
+ ( var(DCGArity)
360
+ -> true
361
+ ; Arity is DCGArity+2
362
+ ).
363
+ name_arity(Term, Name, Arity) :-
364
+ callable(Term),
365
+ !,
366
+ functor(Term, Name, Arity).
367
+ name_arity(Spec, _, _) :-
368
+ throw(error(type_error(predicate_indicator, Spec), _)).
369
+
370
+
371
+ principal_pis(PIS, M, Principals) :-
372
+ map_pi_heads(PIS, Heads),
373
+ principal_predicates(Heads, M, Heads2),
374
+ map_pi_heads(Principals, Heads2).
375
+
376
+ map_pi_heads([], []) :- !.
377
+ map_pi_heads([PI0|T0], [H0|T]) :-
378
+ map_pi_head(PI0, H0),
379
+ map_pi_heads(T0, T).
380
+
381
+ map_pi_head(M:PI, M:Head) :-
382
+ nonvar(M),
383
+ !,
384
+ map_pi_head(PI, Head).
385
+ map_pi_head(Name/Arity, Term) :-
386
+ functor(Term, Name, Arity).
387
+
388
+ %! principal_predicates(:Heads, +Context, -Principals)
389
+ %
390
+ % Get the principal predicate list from a list of heads (e.g., the
391
+ % module in which the predicate is defined).
392
+
393
+ principal_predicates(Heads, M, Principals) :-
394
+ find_definitions(Heads, M, Heads2),
395
+ strip_subsumed_heads(Heads2, Principals).
396
+
397
+ find_definitions([], _, []).
398
+ find_definitions([H0|T0], M, [H|T]) :-
399
+ find_definition(H0, M, H),
400
+ find_definitions(T0, M, T).
401
+
402
+ find_definition(Head, _, Def) :-
403
+ strip_module(Head, _, Plain),
404
+ callable(Plain),
405
+ ( predicate_property(Head, imported_from(Module))
406
+ -> ( predicate_property(system:Plain, imported_from(Module)),
407
+ sub_atom(Module, 0, _, _, $)
408
+ -> Def = system:Plain
409
+ ; Def = Module:Plain
410
+ )
411
+ ; Def = Head
412
+ ).
413
+
414
+ %! strip_subsumed_heads(+Heads, -GenericOnes)
415
+ %
416
+ % Given a list of Heads, remove subsumed heads, while maintaining
417
+ % the order. The implementation is slow, but only used on small
418
+ % sets and only for toplevel related tasks.
419
+
420
+ strip_subsumed_heads([], []).
421
+ strip_subsumed_heads([H|T0], T) :-
422
+ '$member'(H2, T0),
423
+ subsumes_term(H2, H),
424
+ \+ subsumes_term(H, H2),
425
+ !,
426
+ strip_subsumed_heads(T0, T).
427
+ strip_subsumed_heads([H|T0], [H|T]) :-
428
+ strip_subsumed(T0, H, T1),
429
+ strip_subsumed_heads(T1, T).
430
+
431
+ strip_subsumed([], _, []).
432
+ strip_subsumed([H|T0], G, T) :-
433
+ subsumes_term(G, H),
434
+ !,
435
+ strip_subsumed(T0, G, T).
436
+ strip_subsumed([H|T0], G, [H|T]) :-
437
+ strip_subsumed(T0, G, T).
438
+
439
+
440
+ %! dwim_predicate(:Head, -NewHead) is nondet.
441
+ %
442
+ % Find a head that is in a `Do What I Mean' sence the same as `Head'.
443
+ % backtracking produces more such predicates. If searches for:
444
+ %
445
+ % * predicates with a similar name in an import module
446
+ % * predicates in a similar module with the same name
447
+ % * predicates in any module with the same name
448
+
449
+ dwim_predicate(Head, DWIM) :-
450
+ dwim_predicate_list(Head, DWIMs),
451
+ '$member'(DWIM, DWIMs).
452
+
453
+ dwim_predicate_list(Head, [Head]) :-
454
+ current_predicate(_, Head),
455
+ !.
456
+ dwim_predicate_list(M:Head, DWIMs) :-
457
+ setof(DWIM, dwim_pred(M:Head, DWIM), DWIMs),
458
+ !.
459
+ dwim_predicate_list(Head, DWIMs) :-
460
+ setof(DWIM, '$similar_module'(Head, DWIM), DWIMs),
461
+ !.
462
+ dwim_predicate_list(_:Goal, DWIMs) :-
463
+ setof(Module:Goal,
464
+ current_predicate(_, Module:Goal),
465
+ DWIMs).
466
+
467
+ %! dwim_pred(:Head, -DWIM) is nondet.
468
+ %
469
+ % True if DWIM is a predicate with a similar name than Head in the
470
+ % module of Head or an import module thereof.
471
+
472
+ dwim_pred(Head, M:Dwim) :-
473
+ strip_module(Head, Module, H),
474
+ default_module(Module, M),
475
+ '$dwim_predicate'(M:H, Dwim).
476
+
477
+ %! '$similar_module'(:Goal, -DWIMGoal) is nondet.
478
+ %
479
+ % True if DWIMGoal exists and is, except from a typo in the
480
+ % module specification, equivalent to Goal.
481
+
482
+ '$similar_module'(Module:Goal, DwimModule:Goal) :-
483
+ current_module(DwimModule),
484
+ dwim_match(Module, DwimModule),
485
+ current_predicate(_, DwimModule:Goal).