2026/03/12

Newest at the top

2026-03-12 21:09:21 +0100Square(~Square@user/square) Square
2026-03-12 21:09:19 +0100akegalj(~akegalj@141-138-62-190.dsl.iskon.hr) (Quit: leaving)
2026-03-12 21:09:04 +0100Square2(~Square@user/square) (Quit: Leaving)
2026-03-12 20:58:00 +0100arandombit(~arandombi@user/arandombit) arandombit
2026-03-12 20:54:49 +0100akegalj(~akegalj@141-138-62-190.dsl.iskon.hr)
2026-03-12 20:54:14 +0100 <lambdabot> https://hackage.haskell.org/package/lvish
2026-03-12 20:54:14 +0100 <ski> @hackage lvish
2026-03-12 20:54:09 +0100 <ski> (you get non-declarative concurrency, when you allow race conditions, non-deterministic merging of multiple concurrent channels. i guess lvish is a principled way to keep declarativity, in some of those cases)
2026-03-12 20:52:37 +0100Lord_of_Life_Lord_of_Life
2026-03-12 20:52:23 +0100ski. o O ( "Dataflow Parallelism: The Par Monad" (chapter 4, "Parallel and Concurrent Programming in Haskell" by Simon Marlow in 2013) <https://web.archive.org/web/20180108044627/http:/chimera.labs.oreilly.com/books/1230000000929/ch04…> )
2026-03-12 20:50:17 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds)
2026-03-12 20:49:44 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-03-12 20:47:08 +0100 <ski> it's also possible to construct a "read-only view" of a dataflow variable (logic variable), so that you can't instantiate through it
2026-03-12 20:46:37 +0100 <ski> (operations block until their inputs are instantiated)
2026-03-12 20:46:19 +0100 <ski> yea, Oz has declaratie concurrency for this
2026-03-12 20:45:45 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2026-03-12 20:45:24 +0100 <monochrom> I have a feeling that when there are no mutable variables, you have confluence so it doesn't matter what you do.
2026-03-12 20:44:45 +0100 <monochrom> For AND, Curry only requires this: Let x be a logic variable, then "x>=5 AND unify(x,10)" and "unify(x,10) AND x>=5" behave the same, both should discover x=10 and compute 10>=5.
2026-03-12 20:43:53 +0100chewybread(~chewybrea@user/chewybread) chewybread
2026-03-12 20:43:53 +0100chewybread(~chewybrea@240b:10:9502:4100:80a2:daac:f3ad:170) (Changing host)
2026-03-12 20:43:53 +0100chewybread(~chewybrea@240b:10:9502:4100:80a2:daac:f3ad:170)
2026-03-12 20:42:08 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2026-03-12 20:41:48 +0100qqq(~qqq@185.54.22.246) (Ping timeout: 264 seconds)
2026-03-12 20:41:15 +0100target_i(~target_i@user/target-i/x-6023099) (Ping timeout: 255 seconds)
2026-03-12 20:37:06 +0100Ranhir(~Ranhir@157.97.53.139) Ranhir
2026-03-12 20:36:48 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2026-03-12 20:36:41 +0100 <ski> i heard something about the rate at continuing with Sagrada Familia going up, recently, due to being able to use prefab pieces, designed to fit, constructed elsewhere
2026-03-12 20:36:20 +0100arandombit(~arandombi@user/arandombit) (Ping timeout: 244 seconds)
2026-03-12 20:35:46 +0100target_i(~target_i@user/target-i/x-6023099) (Ping timeout: 248 seconds)
2026-03-12 20:35:29 +0100 <EvanR> *your code project is going this well*
2026-03-12 20:35:14 +0100AlexNoo(~AlexNoo@5.139.232.240) (Ping timeout: 248 seconds)
2026-03-12 20:35:10 +0100 <EvanR> the Sagrada Família on the cover is great
2026-03-12 20:35:04 +0100 <monochrom> It doesn't even have Prolog's cut, so you can't even kill your sibling!
2026-03-12 20:35:00 +0100remedan(~remedan@78-80-95-79.customers.tmcz.cz) (Quit: Bye!)
2026-03-12 20:34:59 +0100 <ski> (at first, i was thinking of the two different flavors of AND-parallelism (merge-at-join vs. communicate), but presumably they're only doing OR-parallelism)
2026-03-12 20:34:07 +0100 <monochrom> Given that non-determinism cannot be used with mutable variables, you have a multiple-world semantics, such that there is no communication between two sibling worlds.
2026-03-12 20:34:05 +0100ski. o O ( "Concepts, Techniques, and Models of Computer Programming" by Peter Van Roy,Seif Haridi in 2003-06-05 at <https://webperso.info.ucl.ac.be/~pvr/book.html>,<https://webperso.info.ucl.ac.be/~pvr/VanRoyHaridi2003-book.pdf> )
2026-03-12 20:31:29 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2026-03-12 20:31:10 +0100 <monochrom> Yeah I'm thinking "what's there to handle?" because the only thing left to do is collecting results.
2026-03-12 20:31:08 +0100AlexNoo(~AlexNoo@5.139.232.240)
2026-03-12 20:30:58 +0100AlexNoo(~AlexNoo@5.139.232.240) (Ping timeout: 248 seconds)
2026-03-12 20:30:37 +0100skiwas (re)reading it recently (didn't get to that part yet, though)
2026-03-12 20:30:13 +0100 <ski> (the CTM book talks about this, in the chapter about constraint programming)
2026-03-12 20:29:50 +0100 <ski> presumably the alternation acts as a barrier, where information can flow into the "engine", but not out of (except at the end of the computation, collecting results)
2026-03-12 20:29:28 +0100 <monochrom> I don't know.
2026-03-12 20:28:49 +0100 <ski> how does it handle trying to communicate a result non-locally out of an alternative ?
2026-03-12 20:27:25 +0100 <monochrom> Yeah
2026-03-12 20:27:11 +0100 <ski> breadth-first ?
2026-03-12 20:26:51 +0100 <monochrom> There is a Curry compiler, Curry2Go, which compiles non-determinism to Go multi-threading so all alternatives are literally tried concurrently.
2026-03-12 20:26:42 +0100AlexNoo__(~AlexNoo@5.139.232.240) (Ping timeout: 248 seconds)