Finally leaving the mastodon.social nest & moving to @jamesnvc
Account moving doesn't seem to be working, so I guess I'll just set up a redirect & folks can manually re-follow if they care to
@aphyr Ah yeah, that's true. The implementations can do *some* optimizations to avoid extra choice-points, but it's pretty finicky & pretty ugly to take advantage of; that makes sense.
Yeah, reif is very cool -- I used it to write grammars for HTTP/2 that can run in either direction (i.e. parse or serialize) but it was very complicated to make it work (https://github.com/jamesnvc/http2_client/blob/master/prolog/frames.pl).
Very cool, in any case.
@aphyr Wait, so it's going Prolog -> Lisp -> miniKanren? That is beautiful, I love it!
I also like your comment on line 91 of that gist; logic variables are amazing!
For the code itself, any particular reason why all the semi-colons instead of defining more clauses for the predicate? I'd usually see like
foo(X) :- a.
foo(X) :- b.
...
vs
foo(X) :- ( a ); ( b ) ; ....
@aphyr π An iconoclast where ever you go! π
@aphyr haha, I think the Prolog community tends to enjoy wild experiments with the language itself :grin:
Also, wrt to unicode characters, the semantics of what's a variable/atom should be defined by these rules: https://www.swi-prolog.org/pldoc/man?section=syntax#sec:2.16.1.9 I'm sure Jan would like to update either the language or the docs if there are inconsistencies!
@aphyr Ooh, you're using SWI? Nice, I've gotten involved in that community over the last couple years & I've come to really love the language and some of the folks involved. If you have any issues, the Discourse at https://swi-prolog.discourse.group/ is quite good - Jan, the primary developer is known to add features/fix bugs in response to posts there in a matter of hours :p
@bzg (although I think I did mangle the in-reply-to header...I might try re-sending, with an added apology to the recipients)
@bzg Ah okay, thanks! I'm not subscribed -- I just read the list through gnus -- so I guess that'd be it. Thanks!
@bzg Relatedly, I just tried to send patches to two bugs from the Org bug tracker thing & I think I did it wrong -- I don't see either in the mailing list. Someday I'll figure this out π
@aphyr @technomancy I look forward to your next interview which somehow relies on Turing-complete composition of combining characters :p
@aphyr @technomancy Oh god, I just realized that now, absolutely incredible π
@aphyr I have very rarely laughed out loud reading code, but your stuff always gets me π
@aphyr I love your latest "* the Technical Interview" so much <3
@bzg Yeah, my workflow will undoubtedly improve. I like being able to stay in Emacs for more of the work and I do appreciate not having to use a centralized system like Github.
I appreciate the reassurance! As you say, I think I just need to get more used to the workflow...right now, I'm just worried I'm forgetting a CC or sending to the wrong place, plus not being able to edit if I did something wrong.
@bzg I just started doing that, precisely for org-mode and Emacs itself. I...don't love it, to be honest -- I find myself much more stressed about doing something wrong & it definitely raises the barrier for me sending little patches in
@aphyr Neat! Isn't the if-let in call-method somewhat unneeded though (or should be a try/catch?), since get-field throws if the method doesn't exist?
@iliana My standing desk trick is using a bookshelf as a desk, so I can put the keyboard on one shelf, the monitor on another & independently adjust them
@mcc (also, tomorrow is July 18 :p)
@mcc No spoilers, but after doing in with vanilla Prolog, you might want to look into using a constraint library (e.g. clpfd [1]) -- you can do it in like 30 lines that way.
I make computer things in Toronto, mostly in Clojure. I powerlifting, strongman, and Highland Games How are you?