diff options
| author | Arnaud Bailly <arnaud.bailly@iohk.io> | 2025-01-25 10:45:41 +0100 |
|---|---|---|
| committer | Arnaud Bailly <arnaud.bailly@iohk.io> | 2025-01-25 10:45:41 +0100 |
| commit | 7752d73216578d5961751b5d0535088d384b4aa6 (patch) | |
| tree | 786e46fe1276e93ade0a48398cd4c9ac13081707 /clojure/src | |
| parent | d6f68e919db51d366c8ca3c1509bea12aa81d692 (diff) | |
| download | lambda-nantes-7752d73216578d5961751b5d0535088d384b4aa6.tar.gz | |
Move λ-calcul workshop code to subdirectory
Diffstat (limited to 'clojure/src')
| -rw-r--r-- | clojure/src/lccl/app.clj | 30 | ||||
| -rw-r--r-- | clojure/src/lccl/fwk/middlewares.clj | 15 | ||||
| -rw-r--r-- | clojure/src/lccl/lc/ast.clj | 7 | ||||
| -rw-r--r-- | clojure/src/lccl/lc/evaluator.clj | 28 | ||||
| -rw-r--r-- | clojure/src/lccl/main.clj | 36 |
5 files changed, 0 insertions, 116 deletions
diff --git a/clojure/src/lccl/app.clj b/clojure/src/lccl/app.clj deleted file mode 100644 index 522d8bf..0000000 --- a/clojure/src/lccl/app.clj +++ /dev/null @@ -1,30 +0,0 @@ -(ns lccl.app - (:require [reitit.ring :as ring-reitit] - [reitit.coercion.malli] - [reitit.ring.malli] - [reitit.dev.pretty :as pretty] - [reitit.ring.middleware.muuntaja :as muuntaja] - [muuntaja.core :as m])) - -(defn eval - [request] - (let [sexpr (slurp (:body request))] - (println "Demande d'évaluation de l'expression :" sexpr) - {:status 200, :body sexpr})) - -(defn api-handler - [] - (ring-reitit/ring-handler - (ring-reitit/router - [["/eval" {:post eval}]] - - {:exception pretty/exception - :data { - :muuntaja m/instance - :middleware [muuntaja/format-response-middleware]}}))) - -(defn app-handler - [] - (ring-reitit/routes (api-handler))) - - diff --git a/clojure/src/lccl/fwk/middlewares.clj b/clojure/src/lccl/fwk/middlewares.clj deleted file mode 100644 index 973cffc..0000000 --- a/clojure/src/lccl/fwk/middlewares.clj +++ /dev/null @@ -1,15 +0,0 @@ -(ns lccl.fwk.middlewares - (:require [ring.middleware.reload :as reload])) - -; https://bogoyavlensky.com/blog/auto-reloading-ring/ -(defn reloading-ring-handler - "Reload ring handler on each request." - [f] - (let [reload! (#'reload/reloader ["src"] true)] - (fn - ([request] - (reload!) - ((f) request)) - ([request respond raise] - (reload!) - ((f) request respond raise)))))
\ No newline at end of file diff --git a/clojure/src/lccl/lc/ast.clj b/clojure/src/lccl/lc/ast.clj deleted file mode 100644 index 58bad11..0000000 --- a/clojure/src/lccl/lc/ast.clj +++ /dev/null @@ -1,7 +0,0 @@ -(ns lccl.lc.ast) - -(defrecord Var [name]) -(defrecord Abs [arg body]) -(defrecord App [left right]) - -(def IDENTITY (->Abs "x" (->Var "x"))) diff --git a/clojure/src/lccl/lc/evaluator.clj b/clojure/src/lccl/lc/evaluator.clj deleted file mode 100644 index 70e972e..0000000 --- a/clojure/src/lccl/lc/evaluator.clj +++ /dev/null @@ -1,28 +0,0 @@ -(ns lccl.lc.evaluator - (:import [lccl.lc.ast Var Abs App]) - (:require [lccl.lc.ast :refer [->Abs ->App]])) - -(declare substitute) - -(defmulti evaluate (fn [term] [(type term)])) -(defmethod evaluate [Var] ([term] term)) -(defmethod evaluate [Abs] ([term] term)) -(defmethod evaluate [App] - ([term] - (let [left (-> term :left)] - (condp = (type left) - Abs (substitute (:body left) (:arg left) (:right term)) - term)))) - -(defmulti substitute (fn [body arg val] [(type body)])) -(defmethod substitute [Var] - ([body arg val] - (if (= (:name body) arg) val body))) -(defmethod substitute [Abs] - ([body arg val] - (if (= (:arg body) arg) - body - (->Abs (:arg body) (substitute (:body body) arg val))))) -(defmethod substitute [App] - ([body arg val] - (->App (substitute (:left body) arg val) (substitute (:right body) arg val)))) diff --git a/clojure/src/lccl/main.clj b/clojure/src/lccl/main.clj deleted file mode 100644 index 071d7c6..0000000 --- a/clojure/src/lccl/main.clj +++ /dev/null @@ -1,36 +0,0 @@ -(ns lccl.main - (:require [ring.adapter.jetty :as ring-jetty] - [clj-http.client :as client] - [lccl.app :as app] - [lccl.fwk.middlewares :as middlewares]) - (:gen-class)) - -(def TEAM_NAME "LCCL") -(def SELF_PORT 8888) -(def SELF_URL (str "http://127.0.0.1:" SELF_PORT)) -(def TESTER_URL "http://127.0.0.1:8080") - -(defn run-http-server! - [{:keys [dev-mode? server-options]}] - (let [create-handler-fn #(app/app-handler) - handler* (if dev-mode? - (middlewares/reloading-ring-handler create-handler-fn) - (create-handler-fn))] - (ring-jetty/run-jetty handler* server-options) - (println "Evaluateur à l'écoute sur le port" (:port server-options)))) - -(defn- run! [{dev-mode? :dev-mode?}] - (run-http-server! {:dev-mode? dev-mode? - :server-options {:join? false :port SELF_PORT}}) - (let [response (client/post (str TESTER_URL "/register") - {:body (str "{\"url\": \"" SELF_URL "/eval\", \"name\": \"" TEAM_NAME "\"}") - :content-type :json - :accept :json})] - (println "Résultat de l'enregistrement : " (:body response)))) - -(defn -main - [& _] - (run! {:dev-mode? false})) - -(comment - (run! {:dev-mode? true})) |
