<d_bot>
<stab> Anyone know of a good library for manipulating and interacting with smt that can be parameterized by the backend solver? Looks like alt-ergo may be my best bet without knowing anything about the space. Just want to implement some generic algorithms over the SAT portions of SMT formula without binding the user to a specific theory or solver
<companion_cube>
if you want only SAT, there's more choice
<companion_cube>
and the API is much smaller
<companion_cube>
idk of anything generic though
<companion_cube>
(maybe sattools?_
<d_bot>
<stab> Well so what I want is to only interact with the SAT portions of the formula regardless of the theories my clients are using. Ie. treat (a < b /\ c > d) as (u1 /\ u2) Perform some reorganizing of the SAT formula then pass the new SMT to a solver get some results and do it all over again
<d_bot>
<stab> Basically want to implement an algorithm that is useful regardless of the underlying theories and dont want to lock my clients of the lib into a theory or solver
<d_bot>
<stab> i guess really i could implement this binding between u1 and a<b myself potentially
<companion_cube>
you could functorize I guess
<companion_cube>
SMT solvers already do that kind of stuff internally, the SAT solver doesn't know about theories
Everything has quit [Quit: leaving]
hackinghorn has quit [Quit: Leaving]
Soni has joined #ocaml
bgs has quit [Remote host closed the connection]
bgs has joined #ocaml
rgrinberg has quit [Ping timeout: 260 seconds]
Haudegen has quit [Ping timeout: 268 seconds]
<d_bot>
<stab> yeah it's more like i need to make a series of smt queries that are modifiable by only transforming the SAT which i guess is how SAT+SMT solving works anyways
<d_bot>
<stab> lol
waleee has quit [Ping timeout: 240 seconds]
<companion_cube>
hmmm
<companion_cube>
typically you can't modify a formula once the SMT solver knows about it
<companion_cube>
(not if it's incremental; otherwise if you just do n independent queries it's of course fine)
<companion_cube>
you can use assumptions though
rgrinberg has joined #ocaml
mbuf has joined #ocaml
gravicappa has joined #ocaml
zebrag has joined #ocaml
<d_bot>
<gabenpls> i'm trying to run before i can walk, so i'm learning ocaml first before trying to create a compiler
<d_bot>
<gabenpls> and i've got to say, i'm loving ocaml
<d_bot>
<gabenpls> what a cool lang, sad i didn't discover it sooner
<d_bot>
<gabenpls> can't wait to do rescript
<dmbaturin>
Note that with reScript you will get stuck with an outdated OCaml backend.
<dmbaturin>
If you want to target JS with actual, up-to-date OCaml, you can try js_of_ocaml. It's a trans-compiler from OCaml bytecode to JS.
xd1le has joined #ocaml
<d_bot>
<gabenpls> hmm i didn't plan on using rescript's ocaml backend, just rescript directly. do i have that right?
<dmbaturin>
I mean, reScript is a fork of OCaml 4.06 (last I checked). It's effectively a hard fork, a different language by now, and it locks you out of all new OCaml features added since 4.06.
<d_bot>
<gabenpls> got it
<d_bot>
<gabenpls> so what's the purpose of reasonml? just to make the syntax more easy for people with js background?
<dmbaturin>
ReasonML (now reScript) started as an alternative concrete syntax for OCaml, which created quite a bit of confusion among newcomers as to what it is and isn't. At some point its maintainers decided to position it as a standalone language, which I think is a right decision because it was never kept in sync with the OCaml compiler backend.
<dmbaturin>
Well, the BuckleScript (JS backend) part wasn't kept in sync. ReasonML the concrete syntax itself does work with recent OCaml versions I believe, but almost no one ever used it outside of the BuckleScript/JS stack.
<d_bot>
<gabenpls> so what it comes down to is rescript vs js_of_ocaml, trying to figure out what's better. since i'm coming from a js/react background i'm guessing rescript
<dmbaturin>
For me, js_of_ocaml is a great way to opt out of the NPM nightmare^W ecosystem and produce effectively eternal JS blobs.
<dmbaturin>
If you want to use libraries from NPM a lot, you may want to use a tool that intentionally integrates with that ecosystem, like reScript. Or you may want to try js_of_ocaml as an alternative to that ecosystem.
<d_bot>
<gabenpls> i see. thanks.
rgrinberg has quit [Read error: Connection reset by peer]
rgrinberg has joined #ocaml
rgrinberg has quit [Read error: Connection reset by peer]
rgrinberg has joined #ocaml
Guest5422 has quit [Read error: Connection reset by peer]
Guest5422 has joined #ocaml
rgrinberg has quit [Remote host closed the connection]
rgrinberg has joined #ocaml
<d_bot>
<zakkor> @gabenpls, dmbaturin: there is also the Melange project, which AFAIK tries to move away from rescript and wants to just make ReasonML an alternative syntax for OCaml, while leveraging the OCaml ecosystem going forward, instead of moving away from it
<d_bot>
<Et7f3> Esy reason codebase use recent feature. Esy is a real binary so it is native reason
<d_bot>
<Et7f3> (Oh Sorry for repost just so a different link but didn't opened it 🤦🏻)
<d_bot>
<Et7f3> Why on IRC you have nickname: message does it kind of ping on discord or just conventions to know destination
KvL has joined #ocaml
mro has quit [Remote host closed the connection]
jlrnick has joined #ocaml
mro has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
noddy has quit [Quit: WeeChat 3.3]
KvL has quit [Ping timeout: 240 seconds]
noddy has joined #ocaml
mro has quit [Remote host closed the connection]
KvL has joined #ocaml
KvL has quit [Client Quit]
jlrnick has quit [Killed (NickServ (GHOST command used by jlrnick-))]
jlrnick has joined #ocaml
jlrnick has quit [Killed (NickServ (GHOST command used by jlrnick-))]
040AADED3 has joined #ocaml
jlrnick has joined #ocaml
<d_bot>
<VPhantom> Melange isn't specific to ReasonML: it still supports the ReScript syntax (until ReScript moves too far away from OCaml in the future) and most importantly: up-to-date OCaml syntax which ReScript dropped support for. Melange is specifically for compiling any of the syntaxes into clean and light JS, without sacrificing the ability to keep up with the latest OCaml version. That means let bindings and all the modern OCaml goodness.
<d_bot>
<VPhantom> Unlike ReScript however, Melange isn't sponsored at the moment, so progress is slow at best. Something I hope to help the author improve in the coming year.
<d_bot>
<stab> yeah it's pretty annoying to get incremental solving to work with this since then I need to make some assumptions about how the client is representing formula. Right now im just assuming independent queries but obviously that's bad
<d_bot>
<stab> Implementing a paper so im not completely off the reservation lol
<d_bot>
<Kakadu> Do you know, was OCaml syntax has ever been patched to support JSX? AFAIK ReasonML one was patched. Wondering, which issues patching OCaml syntax could discover: tooo many conflicts or something else?...
spoofer has joined #ocaml
<d_bot>
<VPhantom> ReasonML has JSX, and I bet ReScript probably does as well. In OCaml there isn't a direct equivalent. There's some PPX floating around but they're for specific APIs.
<companion_cube>
I don't think Xavier cares about JSX
<companion_cube>
The syntax has not changed
waleee has quit [Ping timeout: 250 seconds]
mbuf has quit [Quit: Leaving]
<d_bot>
<octachron> The ppx syntax has been amended to allow `{%jsx|...|}` as a shortcut for `[%jsx{|...|}]`.
dalek-caan has joined #ocaml
<d_bot>
<EduardoRFS> problem with ppx with string is that ocamlformat just doesn't care about them
<d_bot>
<Kakadu> It would be great to have configurable parser where we can enable/disable JSX/metaOCaml/Reason syntaxes and metaOCaml would generate for us efficient recursive descent with error recovery
<d_bot>
<VPhantom> I'll admit, if inline HTML could simply resolve to hyperscript type function calls I'd happily use it for templating. (As it is, I use said hyperscript technique with a base `h` function and derived curried `h tagname` functions.)
chrisz has quit [Ping timeout: 250 seconds]
waleee has joined #ocaml
chrisz has joined #ocaml
<d_bot>
<VPhantom> Back in my JS days I created a compile-time templating scheme (<https://github.com/vphantom/node-jstc>) and I might be tempted to experiment with the concept with OCaml. In this old module each template file became a function which takes an environment object as its argument and returns a string of output. The basic idea of "string first, with OCaml interspersed" could be interesting, like PHP, ASP, JSP, etc. Of course I'd appen
<d_bot>
<VPhantom> Hyperscript, on the other hand, has the advantage of being OCaml directly and of providing more guarantees about the quality of the output (tags get closed automatically, for one thing).
<d_bot>
<VPhantom> (Huh, there was an Apache `mod_caml` around 2004. Loaded bytecode dynamically.)