This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-10-14
Channels
- # announcements (7)
- # aws (1)
- # babashka (1)
- # beginners (19)
- # calva (9)
- # clj-commons (4)
- # clj-kondo (64)
- # clj-on-windows (27)
- # cljsrn (12)
- # clojure (127)
- # clojure-bay-area (3)
- # clojure-europe (25)
- # clojure-hungary (7)
- # clojure-nl (1)
- # clojure-norway (9)
- # clojure-spec (5)
- # clojure-survey (2)
- # clojure-uk (22)
- # community-development (5)
- # core-async (19)
- # cursive (29)
- # datascript (8)
- # events (1)
- # fulcro (2)
- # graalvm (3)
- # jobs (1)
- # lsp (155)
- # malli (18)
- # nbb (6)
- # off-topic (86)
- # pathom (2)
- # rdf (18)
- # re-frame (9)
- # releases (2)
- # scittle (24)
- # shadow-cljs (33)
- # xtdb (4)
ez a FlowStorm dolog nagyon igeretesnek tunik: https://youtu.be/A3AzlqNwUXc probalta mar valaki? nekem pont le kellett nyomoznom egy performance issue-t a hetekben. probaltam megfogni ezekkel a cuccokkal, de korulmenyes volt:
thunknyc/profile {:mvn/version "0.5.2"}
org.clojure/tools.trace {:mvn/version "0.7.11"}
ezek a namespaceik:
[profile.core :as prof :refer [profile]]
[clojure.tools.trace :as trace]
ugyh vegulis az async-profiler segitett:
com.clojure-goes-fast/clj-async-profiler {:mvn/version "1.0.0"}
de gyanitom h a FlowStorm-al meg hatekonyabb lett volna a vadaszat.Igen, ez elegge jonak tunik. Foleg, hogy ki lehet menteni az aktualis lepes statuszat a repl-be.
Ez nalam a flow-test volt. Eleg jo, sot... Koszi, hogy megosztottad errol lemaradtam! 🙂
btw, epp azon morfondiroztam, h h lehetne clojure stilusban irni javascriptet. elso 5let az volt, h extra fuggveny argumentek, default ertekekkel szimulalnak a local binding-okat:
const P = x => (console.log('?', x), x) // Probe
console.log('Defining f...')
const f = (
arg_1,
// let:
local_1 = P(2),
local_2 = arg_1 + local_1 + 1
) => ({arg_1, local_1, local_2})
console.log('Calling f(1)...')
console.log(f(1))
console.log('Accidental local override...')
console.log(f(1, 10))
aztan rajottem h egy primitive segedeszkozzel tudok olvashatobb IIFE-t (https://developer.mozilla.org/en-US/docs/Glossary/IIFE) csinalni:
const Let = bindings => bindings()
console.log('Defining g...')
const g = arg_1 =>
Let((local_1 = P(2),
local_2 = arg_1 + local_1 + 1) => ({
arg_1, local_1, local_2
}))
console.log('Calling g(1)...')
console.log(g(1))
ami mar kb ugy nez ki, mint az elisp, pl 🙂
(let ((variable value)
(variable value)
…)
body…)
nyilvan nem idiomatic JS, ami hatrany, viszont az elony az, h ilyen stilussal nagyobb valoszinuseggel ir az ember funkcionalis kodot...
hasznaljuk pl a https://wappler.io -t, amiben van egy AppConnect nevu reactive JS framework, ami hasonloan a Vue.js -hez, reaktiv objektumokba csomagolja az adatokat. viszont olyan verbose, h mar meguntam es csinaltam hozza egy kis illesztest, amitol clojure-osebben megkozelitesu lehet a kod:
const merge = (o1, o2) => ({...o1, ...o2})
const deref = (dmx_var) => dmx_var?.dmxComponent?.get('value')
const reset = (dmx_var, val) => (dmx_var?.dmxComponent?.set('value', val), val)
const swap = (dmx_var, f, ...args) => reset(dmx_var, f(deref(dmx_var), ...args))
es igy tudok olyat irni pl, h:
reset(user,
merge(
decode_id_token(id_token()),
merge(profile_defaults, user_profile)))
ami mar szinte clojure 🙂