summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhongheng Liu <z.liu@outlook.com.gr>2025-03-26 13:05:30 +0200
committerZhongheng Liu <z.liu@outlook.com.gr>2025-03-26 13:05:30 +0200
commitcb233381dc6d818ae3d2efa416a8ba1434b85da5 (patch)
tree78b5b5f95d4ef6f45914f3d3c056fc6e3ce26aa9
downloadprolog-master.tar.gz
prolog-master.tar.bz2
prolog-master.zip
feat: initial commit; sample prolog scriptHEADmaster
-rw-r--r--.envrc1
-rw-r--r--.gitignore9
-rw-r--r--flake.lock27
-rw-r--r--flake.nix24
-rw-r--r--knowledge_base.pl32
5 files changed, 93 insertions, 0 deletions
diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..3550a30
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use flake
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4d058db
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+# Devenv
+.devenv*
+devenv.local.nix
+
+# direnv
+.direnv
+
+# pre-commit
+.pre-commit-config.yaml
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..15012bd
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,27 @@
+{
+ "nodes": {
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1742669843,
+ "narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "1e5b653dff12029333a6546c11e108ede13052eb",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..e1b6fe1
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,24 @@
+{
+ description = "A very basic flake";
+
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
+ };
+
+ outputs = { self, nixpkgs }: {
+ devShells.x86_64-linux.default = let pkgs = nixpkgs.legacyPackages.x86_64-linux;
+ in pkgs.mkShell {
+ buildInputs = with pkgs; [
+ git
+ swiProlog
+ ];
+ shellHook = ''
+ echo hi
+ '';
+ };
+ packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+ packages.x86_64-linux.default = self.packages.x86_64-linux.hello;
+
+ };
+}
diff --git a/knowledge_base.pl b/knowledge_base.pl
new file mode 100644
index 0000000..542ca70
--- /dev/null
+++ b/knowledge_base.pl
@@ -0,0 +1,32 @@
+human(jack).
+income(jack, 480).
+
+human(jones).
+income(jones, 20).
+
+human(joe).
+income(joe, 1000).
+
+human(jeremy).
+product(jeremy).
+
+product(grapes).
+cost(grapes, 5).
+
+product(pasta).
+cost(pasta, 1).
+
+product(car).
+cost(car, 400).
+likes(jack, pasta).
+likes(jones, car).
+likes(joe, car).
+can_afford(X, Y) :-
+ income(X, Income),
+ cost(Y, Cost),
+ Income > Cost.
+will_buy(X, Y) :-
+ human(X),
+ product(Y),
+ likes(X, Y),
+ can_afford(X, Y).