Logs: liberachat/#haskell
| 2026-01-25 21:35:11 | <[exa]> | but we've got our cozy haskell null!!! |
| 2026-01-25 21:35:41 | <tomsmeding> | [exa]: let me invert the question: why are you parsing a ()? |
| 2026-01-25 21:36:04 | geekosaur | wonders if it's to play a bit more nicely in ghci with ExtendedDefaultRules or something like that |
| 2026-01-25 21:36:19 | <[exa]> | I wanted to nicely match if a value is empty, looked pretty much okay that way |
| 2026-01-25 21:37:09 | <geekosaur> | tbh that actually feels a bit wrong to me, since null is in-band in JSON |
| 2026-01-25 21:38:30 | <[exa]> | oh well look at that https://github.com/haskell/aeson/issues/788#issuecomment-939328524 |
| 2026-01-25 21:38:58 | <[exa]> | the philosophical reason is: in js everything can be null |
| 2026-01-25 21:39:24 | <monochrom> | Does the empty object {} exist in JSON? I would be OK with that becoming () in Haskell. But then my idea still implies that parse errors still exist, e.g., parsing "5" to () should be an error. |
| 2026-01-25 21:40:35 | <geekosaur> | that's what I meant by "in-band" |
| 2026-01-25 21:40:50 | <geekosaur> | in Haskell it's a distinct type, not a distinct value inhabiting every type |
| 2026-01-25 21:41:26 | × | oskarw quits (~user@user/oskarw) (Remote host closed the connection) |
| 2026-01-25 21:42:41 | → | pavonia joins (~user@user/siracusa) |
| 2026-01-25 21:52:45 | × | jmcantrell_ quits (~weechat@user/jmcantrell) (Ping timeout: 252 seconds) |
| 2026-01-25 21:53:08 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 2026-01-25 21:55:30 | × | DetourNetworkUK quits (DetourNetw@user/DetourNetworkUK) (Ping timeout: 252 seconds) |
| 2026-01-25 21:57:57 | <tomsmeding> | do I really have to reach into ghc-internal to get the UserInterrupt exception, for detecting if someone ^C'd me? |
| 2026-01-25 21:58:30 | <tomsmeding> | ah no I'm stupid, ignore, it's AsyncException in base |
| 2026-01-25 22:07:16 | <monochrom> | :) |
| 2026-01-25 22:07:58 | <monochrom> | But beware that it is only delivered to the main thread. |
| 2026-01-25 22:11:28 | → | mjacob joins (~mjacob@adrastea.uberspace.de) |
| 2026-01-25 22:14:00 | <mjacob> | What are possible applications of cycles in functional reactive programming? I know that many frameworks forbid it unless there is a delay in each cycle. But it is hard to me to think of an example where cycles are useful (with or without delay). |
| 2026-01-25 22:15:35 | <tomsmeding> | a clock? (disclaimer: have never used FRP) |
| 2026-01-25 22:21:01 | × | oats quits (~oats@user/oats) (Read error: Connection reset by peer) |
| 2026-01-25 22:21:16 | → | oats joins (~oats@user/oats) |
| 2026-01-25 22:22:50 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 245 seconds) |
| 2026-01-25 22:30:45 | <mjacob> | tomsmeding: Where is the cycle in this example? |
| 2026-01-25 22:31:05 | <tomsmeding> | the update to the time triggers an update to the time again, after a delay? |
| 2026-01-25 22:31:14 | <tomsmeding> | as I said, I dunno, maybe this is nonsense :) |
| 2026-01-25 22:32:35 | <EvanR> | early versions of FRP exploited recursive definitions (why you might be thinking of as cycles?) to implement some sort of state |
| 2026-01-25 22:33:07 | <geekosaur> | I wasn't using FRP but a PSQ for a simulation, and one of the events was a status report that triggered every so often in simulated time and rescheduled itself for later |
| 2026-01-25 22:33:08 | <EvanR> | but whether that counts as some sort of cycle, might depend on your concept of the underlying implementation |
| 2026-01-25 22:33:25 | <EvanR> | e.g. interpreting recursion doesn't necessarily need anything cyclic |
| 2026-01-25 22:33:49 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 2026-01-25 22:34:00 | × | takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 244 seconds) |
| 2026-01-25 22:34:01 | <EvanR> | in arrow FRP you wouldn't use recursion but ArrowLoop |
| 2026-01-25 22:35:27 | <geekosaur> | plus most other events scheduled other events for later, since it was a population simulator so it was simulating various life events |
| 2026-01-25 22:38:36 | <monochrom> | People invent all sorts of "plain/simple English" words to avoid saying "recursion". :) |
| 2026-01-25 22:41:08 | <monochrom> | I once posed a homework question that defined infinite streams of Bool to represent timing diagrams of digital circuits, then had students code up a flip flop using a feedback loop. (One more "plain English" word for recursion!) |
| 2026-01-25 22:41:59 | <tomsmeding> | monochrom: conversely, functional programmers call everything recursion that we have more precise words for :) |
| 2026-01-25 22:42:05 | <monochrom> | (It had to go through a delay. I also had a "part (b)" in which the students had to show what would go wrong in Haskell if there were no delay.) |
| 2026-01-25 22:42:36 | <monochrom> | Oh yeah all of us should just say "least fixed point" and be done with it! |
| 2026-01-25 22:43:32 | <monochrom> | But we are worse than calling everything "recursion" aren't we? We call everything "function". |
| 2026-01-25 22:44:23 | <monochrom> | https://www.slideshare.net/slideshow/fp-patterns-buildstufflt/41936137#13 >:) |
| 2026-01-25 22:44:26 | <tomsmeding> | our functions either recurse or traverse |
| 2026-01-25 22:58:41 | <EvanR> | oop, everything's an object. FP, everything's a function! |
| 2026-01-25 22:59:10 | × | Square3 quits (~Square@user/square) (Ping timeout: 255 seconds) |
| 2026-01-25 23:02:34 | × | mulk quits (~mulk@pd95143a6.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 2026-01-25 23:04:34 | → | mulk joins (~mulk@p5b1128da.dip0.t-ipconnect.de) |
| 2026-01-25 23:08:29 | × | sp1ff` quits (~user@2601:1c2:4701:900::32d4) (Remote host closed the connection) |
| 2026-01-25 23:11:22 | × | trickard quits (~trickard@cpe-86-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-01-25 23:11:35 | → | trickard_ joins (~trickard@cpe-86-98-47-163.wireline.com.au) |
| 2026-01-25 23:13:16 | × | Fijxu quits (~Fijxu@user/fijxu) (Quit: XD!!) |
| 2026-01-25 23:14:35 | → | Fijxu joins (~Fijxu@user/fijxu) |
| 2026-01-25 23:20:07 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 2026-01-25 23:20:27 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 2026-01-25 23:28:35 | → | Pozyomka joins (~pyon@user/pyon) |
| 2026-01-25 23:36:42 | → | weary-traveler joins (~user@user/user363627) |
| 2026-01-25 23:42:48 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 256 seconds) |
| 2026-01-25 23:44:10 | × | trickard_ quits (~trickard@cpe-86-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-01-25 23:44:23 | → | trickard_ joins (~trickard@cpe-86-98-47-163.wireline.com.au) |
| 2026-01-26 00:04:49 | → | mixfix41 joins (~sdeny9ee@user/mixfix41) |
| 2026-01-26 00:08:15 | × | xff0x quits (~xff0x@2405:6580:b080:900:3b58:3b23:6c7:a174) (Ping timeout: 245 seconds) |
| 2026-01-26 00:12:11 | → | xff0x joins (~xff0x@2405:6580:b080:900:1b91:f7b5:c35c:b57e) |
| 2026-01-26 00:18:15 | × | xff0x quits (~xff0x@2405:6580:b080:900:1b91:f7b5:c35c:b57e) (Ping timeout: 245 seconds) |
| 2026-01-26 00:19:25 | → | xff0x joins (~xff0x@2405:6580:b080:900:572:fd16:77ee:a888) |
| 2026-01-26 00:32:48 | × | xff0x quits (~xff0x@2405:6580:b080:900:572:fd16:77ee:a888) (Ping timeout: 252 seconds) |
| 2026-01-26 00:33:47 | → | xff0x joins (~xff0x@2405:6580:b080:900:41e3:7849:bdcf:b5e1) |
| 2026-01-26 00:36:49 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 260 seconds) |
| 2026-01-26 00:50:02 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 2026-01-26 00:54:38 | × | trickard_ quits (~trickard@cpe-86-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2026-01-26 00:54:50 | → | trickard_ joins (~trickard@cpe-86-98-47-163.wireline.com.au) |
| 2026-01-26 00:56:16 | × | Tuplanolla quits (~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) (Quit: Leaving.) |
| 2026-01-26 01:02:28 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds) |
| 2026-01-26 01:05:27 | × | xff0x quits (~xff0x@2405:6580:b080:900:41e3:7849:bdcf:b5e1) (Ping timeout: 250 seconds) |
| 2026-01-26 01:08:23 | × | emmanuelux quits (~em@user/emmanuelux) (Quit: bye) |
| 2026-01-26 01:10:24 | → | emmanuelux joins (~em@user/emmanuelux) |
| 2026-01-26 01:14:00 | × | Fijxu quits (~Fijxu@user/fijxu) (Quit: XD!!) |
| 2026-01-26 01:16:13 | → | Fijxu joins (~Fijxu@user/fijxu) |
| 2026-01-26 01:22:25 | → | qqq joins (~qqq@185.54.21.105) |
| 2026-01-26 01:37:13 | × | cyphase quits (~cyphase@user/cyphase) (Ping timeout: 246 seconds) |
| 2026-01-26 01:39:49 | × | acidjnk quits (~acidjnk@p200300d6e71719732cd814db2eedd90f.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 2026-01-26 01:40:14 | → | omidmash8 joins (~omidmash@user/omidmash) |
| 2026-01-26 01:42:04 | × | omidmash quits (~omidmash@user/omidmash) (Ping timeout: 244 seconds) |
| 2026-01-26 01:42:04 | omidmash8 | is now known as omidmash |
| 2026-01-26 01:42:10 | → | cyphase joins (~cyphase@user/cyphase) |
| 2026-01-26 01:51:16 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 2026-01-26 01:55:54 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 2026-01-26 02:08:05 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2026-01-26 02:12:08 | trickard_ | is now known as trickard |
| 2026-01-26 02:15:25 | × | weary-traveler quits (~user@user/user363627) (Quit: Konversation terminated!) |
| 2026-01-26 02:15:41 | → | weary-traveler joins (~user@user/user363627) |
| 2026-01-26 02:19:34 | × | Pozyomka quits (~pyon@user/pyon) (Ping timeout: 246 seconds) |
| 2026-01-26 02:21:43 | → | Pozyomka joins (~pyon@user/pyon) |
| 2026-01-26 02:45:28 | × | confusedalex quits (~confuseda@user/confusedalex) (Ping timeout: 246 seconds) |
| 2026-01-26 02:56:20 | → | confusedalex joins (~confuseda@user/confusedalex) |
| 2026-01-26 02:57:06 | × | ski quits (~ski@remote11.chalmers.se) (Remote host closed the connection) |
| 2026-01-26 03:02:10 | jmcantrell_ | is now known as jmcantrell |
| 2026-01-26 03:18:27 | → | FANTOM joins (~fantom@87.75.185.177) |
| 2026-01-26 03:21:49 | → | ski joins (~ski@remote11.chalmers.se) |
| 2026-01-26 03:25:52 | × | omidmash quits (~omidmash@user/omidmash) (Quit: The Lounge - https://thelounge.chat) |
All times are in UTC.