Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
tau-prolog
Advanced tools
Tau Prolog is a client-side Prolog interpreter fully implemented in JavaScript, whose development has been directed by the ISO Prolog Standard.
ISO Prolog Standard compliance. Tau Prolog development has been directed by the ISO Prolog Standard, designed to promote the applicability and portability of Prolog text and data among several data processing systems.
Compatible with browsers and Node.js. Tau Prolog has been developed to be used with either Node.js or a browser seamlessly. Just use the
<script>
tag or therequire
function to add Tau Prolog to your project and start coding.
DOM manipulation and event handling. Taking the best from JavaScript and Prolog, Tau Prolog allows you to handle browser events and modify the DOM of a web using Prolog predicates, making Prolog even more powerful.
Asynchronous predicates. Tau Prolog has been developed following a non-blocking, callback-based approach, allowing you, for instance, to sleep the main thread or to do AJAX requests without blocking the browser.
<script src="tau-prolog.js"></script>
var session = pl.create();
session.consult(`
likes(sam, salad).
likes(dean, pie).
likes(sam, apples).
likes(dean, whiskey).
`, {
success: function() { /* Program loaded correctly */ },
error: function(err) { /* Error parsing program */ }
});
or
session.consult("path/to/src.pl", {
success: function() { /* Program loaded correctly */ },
error: function(err) { /* Error parsing program */ }
});
session.query("likes(sam, X).", {
success: function(goal) { /* Goal loaded correctly */ },
error: function(err) { /* Error parsing goal */ }
});
session.answer({
success: function(answer) {
console.log(session.format_answer(answer)); // X = salad ;
session.answer({
success: function(answer) {
console.log(session.format_answer(answer)); // X = apples ;
},
// ...
});
},
fail: function() { /* No more answers */ },
error: function(err) { /* Uncaught exception */ },
limit: function() { /* Limit exceeded */ }
});
This is a general scheme of how to use Tau Prolog:
// Consult
session.consult(program, {
success: function() {
// Query
session.query(goal, {
success: function(goal) {
// Answers
session.answer({
success: function(answer) { /* Answer */ },
error: function(err) { /* Uncaught error */ },
fail: function() { /* Fail */ },
limit: function() { /* Limit exceeded */ }
})
},
error: function(err) { /* Error parsing goal */ }
});
},
error: function(err) { /* Error parsing program */ }
});
For further information, check the Documentation.
You can download a custom bundle including only the modules you need here. Source code of Tau Prolog is available on GitHub. You can also install Tau Prolog from npm:
$ npm install tau-prolog
Tau Prolog source code is released under the terms of the BSD 3-Clause License.
FAQs
An open source Prolog interpreter in JavaScript
The npm package tau-prolog receives a total of 35,996 weekly downloads. As such, tau-prolog popularity was classified as popular.
We found that tau-prolog demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.