Logs on 2023-04-27 (liberachat/#haskell)
| 00:00:09 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 00:01:18 | × | gurkenglas quits (~gurkengla@46.114.179.150) (Ping timeout: 265 seconds) |
| 00:02:02 | → | Inst joins (~Inst@2601:6c4:4081:54f0:e436:a84f:8a3c:7b5) |
| 00:09:52 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds) |
| 00:10:07 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds) |
| 00:10:26 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 00:11:10 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 00:11:45 | × | mei quits (~mei@user/mei) (Ping timeout: 240 seconds) |
| 00:14:29 | → | mei joins (~mei@user/mei) |
| 00:17:23 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 00:17:57 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 00:26:25 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 240 seconds) |
| 00:32:03 | → | oljenkins joins (~philipp@p5dec4bb3.dip0.t-ipconnect.de) |
| 00:32:51 | → | Me-me joins (~Me-me@user/me-me) |
| 00:36:10 | → | ryanbooker joins (uid4340@id-4340.hampstead.irccloud.com) |
| 00:45:21 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 00:50:16 | × | johnw quits (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
| 00:52:24 | → | nate1 joins (~nate@98.45.169.16) |
| 00:53:10 | → | mei joins (~mei@user/mei) |
| 00:57:35 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 01:04:12 | → | gmg joins (~user@user/gehmehgeh) |
| 01:07:20 | × | gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 240 seconds) |
| 01:08:59 | <dmj`> | Clinton[m]: Instead of a class, you could define your own data type as a mock that has functions for various map operations. data Context k v m = Context { insert :: k -> v -> m (); lookup :: k -> m (Maybe v); delete :: k -> m (Maybe v) }, then initialize it in either State s or IO, or StateT s IO, etc. swap it out, poor man's IOC. |
| 01:11:02 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:12:00 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 248 seconds) |
| 01:14:22 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 01:14:59 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 01:15:05 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds) |
| 01:17:10 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:39:17 | <Clinton[m]> | [dmj](https://matrix.to/#/@dmj:libera.chat): that's not a bad idea actually! |
| 01:48:25 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 01:48:27 | → | nick4 joins (~nick@2600:8807:9103:b700:c41a:f850:bfc2:4f27) |
| 02:00:09 | → | drlkf joins (~drlkf@192.184.163.34.bc.googleusercontent.com) |
| 02:08:10 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds) |
| 02:12:17 | <Clinton[m]> | [dmj](https://matrix.to/#/@dmj:libera.chat): yeah that is a good idea. I was thinking of making my own monad transformer but that won't compose with other transformers as well. |
| 02:22:45 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 02:23:40 | × | codaraxis quits (~codaraxis@user/codaraxis) (Max SendQ exceeded) |
| 02:27:02 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 02:28:07 | × | xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 255 seconds) |
| 02:42:52 | × | Square quits (~Square4@user/square) (Ping timeout: 276 seconds) |
| 02:44:27 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds) |
| 02:45:20 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 02:46:42 | → | slac11015 joins (~slack1256@191.125.227.218) |
| 02:48:36 | × | jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Read error: Connection reset by peer) |
| 02:49:04 | × | slack1256 quits (~slack1256@181.43.95.185) (Ping timeout: 248 seconds) |
| 02:49:46 | → | talismanick joins (~user@2601:204:ef80:6c80::a8e2) |
| 02:51:10 | → | jespada_ joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 02:55:37 | × | td_ quits (~td@i5387093B.versanet.de) (Ping timeout: 250 seconds) |
| 02:56:32 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds) |
| 02:57:27 | → | td_ joins (~td@i53870923.versanet.de) |
| 02:58:59 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:59:00 | × | slac11015 quits (~slack1256@191.125.227.218) (Read error: Connection reset by peer) |
| 03:03:31 | × | jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Remote host closed the connection) |
| 03:03:47 | <talismanick> | I'd like to have a `Time` slot in a record, which will be filled out via optparse-generic's `getRecord` - what will parse that read-in datestring for me? |
| 03:04:03 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 03:04:23 | <talismanick> | something like "10-4-23" for "October 4th, 2023" |
| 03:05:46 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 03:17:15 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 03:18:49 | <talismanick> | maybe something that takes a compile-time parameter like `time :: Time "%m-%d-%y"`? |
| 03:19:31 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 03:32:44 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 03:33:29 | → | gmg joins (~user@user/gehmehgeh) |
| 03:36:48 | × | rf quits (~rf@2605:59c8:1604:2210:4a2b:fc:eab3:8901) (Ping timeout: 250 seconds) |
| 03:38:39 | <talismanick> | hello? |
| 03:38:41 | → | czy joins (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) |
| 03:44:25 | × | rekahsoft quits (~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Ping timeout: 240 seconds) |
| 03:45:00 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 03:46:39 | × | phma quits (phma@2001:5b0:210b:db18:b6ee:b0c:4d1a:fd0f) (Read error: Connection reset by peer) |
| 03:47:34 | → | phma joins (~phma@67.44.208.163) |
| 03:49:33 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
| 03:50:30 | × | czy quits (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection) |
| 03:57:19 | → | czy joins (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) |
| 04:04:20 | <dmj`> | Clinton[m]: cool |
| 04:05:41 | → | jwiegley joins (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
| 04:08:29 | <jackdk> | talismanick: it is not clear to me whether you're asking "how do I parse times and what time library to use?" or "how do I wire `Time` into `optparse-generic`?" For the latter, I would just shove a `Time` field into a record inside a newtype (to avoid orphan instances) and then implement any missing instances that GHC complains about" |
| 04:08:39 | <jackdk> | talismanick: I have a call coming up so can't help further, sorry |
| 04:14:22 | × | jargon quits (~jargon@184.101.73.92) (Remote host closed the connection) |
| 04:15:18 | <Clinton[m]> | talismanick: you can do some funky stuff with `generics-sop`. Its tricky though |
| 04:23:50 | <probie> | Is there a preferred dependency when one needs to carry values at the type level, or do projects that do that just tend to roll their own? (e.g. something like `class Carrying a b | a -> b where get :: proxy a -> b`) |
| 04:29:42 | → | vglfr joins (~vglfr@46.96.174.241) |
| 04:30:28 | → | polyphem joins (~polyphem@ip-109-43-50-17.web.vodafone.de) |
| 04:31:09 | <dmj`> | probie: Data.Proxy is standard |
| 04:35:16 | <probie> | dmj`: Sorry, I wasn't clear. Assuming my `Carrying` class above, what I want to do is something like `foo :: Foo -> Bar -> Baz; foo = some def here; data FooFun; instance Carrying FooFun (Foo -> Bar -> Baz) where get _ = foo` |
| 04:38:27 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 04:38:27 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 04:38:27 | → | wroathe joins (~wroathe@user/wroathe) |
| 04:42:00 | <jwiegley> | hello, dmj`! |
| 04:42:24 | jwiegley | is now known as johnw |
| 04:45:57 | × | johnw quits (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
| 04:46:40 | → | johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
| 04:53:55 | → | nate1 joins (~nate@98.45.169.16) |
| 04:55:45 | × | ryanbooker quits (uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 04:58:51 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds) |
| 05:03:12 | → | nick___ joins (~nick@2600:8807:9103:b700:c41a:f850:bfc2:4f27) |
| 05:05:37 | × | nick4 quits (~nick@2600:8807:9103:b700:c41a:f850:bfc2:4f27) (Ping timeout: 250 seconds) |
| 05:07:21 | → | jonathan_ joins (~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) |
| 05:12:07 | <jackdk> | probie: https://hackage.haskell.org/package/reflection ? (what are you doing?) |
| 05:13:01 | × | thegeekinside quits (~thegeekin@189.180.38.222) (Ping timeout: 276 seconds) |
| 05:16:11 | → | npmania1 joins (~Thunderbi@121.128.226.31) |
| 05:16:36 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Quit: use-value) |
| 05:16:50 | × | npmania quits (~Thunderbi@121.128.226.31) (Remote host closed the connection) |
| 05:16:50 | npmania1 | is now known as npmania |
| 05:17:12 | <probie> | jackdk: That works. I really just wanted the `Reifies` type class, but since I don't need `reify`, I'd ignored it |
| 05:17:41 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:18:39 | <probie> | I'm just abusing `deriving via` in weird ways to save a few key strokes and blow out compile time, but sometimes I need to actually supply a function to this machinery |
| 05:18:54 | → | dimator joins (~dimator@035-132-113-218.inf.spectrum.com) |
| 05:22:35 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 05:23:19 | → | trev joins (~trev@user/trev) |
| 05:31:42 | × | vglfr quits (~vglfr@46.96.174.241) (Ping timeout: 255 seconds) |
| 05:33:43 | → | vglfr joins (~vglfr@145.224.101.39) |
| 05:36:03 | × | dimator quits (~dimator@035-132-113-218.inf.spectrum.com) (Quit: dimator) |
| 05:36:25 | × | Teacup quits (~teacup@user/teacup) (Ping timeout: 240 seconds) |
| 05:36:27 | × | vglfr quits (~vglfr@145.224.101.39) (Read error: Connection reset by peer) |
| 05:36:49 | → | thegeekinside joins (~thegeekin@189.180.38.222) |
| 05:36:59 | → | vglfr joins (~vglfr@145.224.101.39) |
| 05:37:57 | → | Teacup joins (~teacup@user/teacup) |
| 05:43:25 | × | vglfr quits (~vglfr@145.224.101.39) (Ping timeout: 255 seconds) |
| 05:44:28 | → | vglfr joins (~vglfr@2a0d:3344:1aaa:7010:183:3e8f:75eb:1bfc) |
| 05:45:24 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 05:46:16 | → | euandreh1 joins (~Thunderbi@189.6.18.7) |
| 05:46:52 | → | kritzefitz_ joins (~kritzefit@debian/kritzefitz) |
| 05:47:04 | → | biberu\ joins (~biberu@user/biberu) |
| 05:47:29 | → | remedan_ joins (~remedan@ip-94-112-0-18.bb.vodafone.cz) |
| 05:47:50 | → | elkcl_ joins (~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru) |
| 05:47:55 | × | son0p quits (~ff@181.136.122.143) (Killed (NickServ (GHOST command used by son0p-))) |
| 05:48:04 | <dminuoso> | Clinton[m]: "I don't want to have to load the whole table" sounds rather strange. |
| 05:48:23 | × | kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 255 seconds) |
| 05:48:23 | × | Goodbye_Vincent quits (cyvahl@freakshells.net) (Quit: Ping timeout (120 seconds)) |
| 05:48:23 | × | dumptruckman quits (~dumptruck@143-42-239-71.ip.linodeusercontent.com) (Quit: ZNC - https://znc.in) |
| 05:48:23 | × | melonai quits (~mel@rnrd.eu) (Quit: ZNC 1.8.2 - https://znc.in) |
| 05:48:29 | <dminuoso> | It suggests a belief, that perhaps merely having a reference to a map implies copying its entire memory. |
| 05:48:42 | → | melonai joins (~mel@rnrd.eu) |
| 05:48:50 | → | Ristovsk- joins (~Ristovski@hellomouse/perf/ristovski) |
| 05:48:56 | × | [Ristovski] quits (~Ristovski@hellomouse/perf/ristovski) (Write error: Broken pipe) |
| 05:48:56 | × | polyphem quits (~polyphem@ip-109-43-50-17.web.vodafone.de) (Ping timeout: 257 seconds) |
| 05:48:56 | × | remedan quits (~remedan@ip-94-112-0-18.bb.vodafone.cz) (Ping timeout: 257 seconds) |
| 05:48:56 | × | elkcl quits (~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru) (Ping timeout: 257 seconds) |
| 05:48:56 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 257 seconds) |
| 05:48:56 | elkcl_ | is now known as elkcl |
| 05:48:56 | euandreh1 | is now known as euandreh |
| 05:49:11 | × | biberu quits (~biberu@user/biberu) (Quit: ZNC - https://znc.in) |
| 05:49:11 | × | thegeekinside quits (~thegeekin@189.180.38.222) (Remote host closed the connection) |
| 05:49:18 | biberu\ | is now known as biberu |
| 05:49:23 | <dminuoso> | A perhaps better technique, is to not expose your StateT directly, and hide the access into the state and contained map behind an interface. |
| 05:49:36 | → | Maxdaman1us joins (~Maxdamant@user/maxdamantus) |
| 05:49:44 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 05:50:00 | <dminuoso> | Say `newtype AppM a = AppM { StateT (Map K V) ... }` with some `lookup :: K -> AppM (Maybe V)` |
| 05:50:09 | → | dumptruckman joins (~dumptruck@143-42-239-71.ip.linodeusercontent.com) |
| 05:51:01 | → | thegeekinside joins (~thegeekin@189.180.38.222) |
| 05:51:04 | <dminuoso> | It goes further than what dmj` suggested, by hiding even the way state is implemented (say by using Control.Monad.State.Class). This has an added benefit that you can easily replace the StateT with say an IORef. |
| 05:51:43 | kritzefitz_ | is now known as kritzefitz |
| 05:51:50 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds) |
| 05:57:11 | × | talismanick quits (~user@2601:204:ef80:6c80::a8e2) (Ping timeout: 250 seconds) |
| 06:00:02 | → | michalz joins (~michalz@185.246.207.197) |
| 06:00:22 | → | mmhat joins (~mmh@p200300f1c701f14fee086bfffe095315.dip0.t-ipconnect.de) |
| 06:01:14 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 06:11:44 | × | npmania quits (~Thunderbi@121.128.226.31) (Ping timeout: 248 seconds) |
| 06:12:03 | → | npmania joins (~Thunderbi@138.199.21.242) |
| 06:13:59 | ← | milia parts (~milia@user/milia) () |
| 06:15:28 | Maxdaman1us | is now known as Maxdamantus |
| 06:18:23 | × | echoreply quits (~echoreply@45.32.163.16) (Quit: WeeChat 2.8) |
| 06:18:26 | × | npmania quits (~Thunderbi@138.199.21.242) (Ping timeout: 250 seconds) |
| 06:19:42 | → | echoreply joins (~echoreply@45.32.163.16) |
| 06:20:10 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 06:20:13 | → | srk_ joins (~sorki@user/srk) |
| 06:22:24 | × | srk quits (~sorki@user/srk) (Ping timeout: 248 seconds) |
| 06:22:54 | srk_ | is now known as srk |
| 06:24:03 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 06:24:39 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 06:24:59 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 06:33:04 | → | mncheck joins (~mncheck@193.224.205.254) |
| 06:38:03 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 06:39:16 | × | vglfr quits (~vglfr@2a0d:3344:1aaa:7010:183:3e8f:75eb:1bfc) (Ping timeout: 252 seconds) |
| 06:39:33 | → | vglfr joins (~vglfr@2a0d:3344:1aaa:7010:bc50:996f:da58:7890) |
| 06:43:00 | → | img joins (~img@user/img) |
| 06:50:49 | × | nick___ quits (~nick@2600:8807:9103:b700:c41a:f850:bfc2:4f27) (Ping timeout: 252 seconds) |
| 06:50:55 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 06:55:40 | → | kalj joins (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) |
| 07:05:04 | × | vglfr quits (~vglfr@2a0d:3344:1aaa:7010:bc50:996f:da58:7890) (Ping timeout: 248 seconds) |
| 07:07:08 | → | lortabac joins (~lortabac@88.125.6.227) |
| 07:08:20 | → | oo_miguel joins (~Thunderbi@77-252-46-249.static.ip.netia.com.pl) |
| 07:10:01 | → | gurkenglas joins (~gurkengla@dynamic-046-114-179-150.46.114.pool.telefonica.de) |
| 07:13:08 | → | vglfr joins (~vglfr@88.155.54.209) |
| 07:14:58 | × | shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 252 seconds) |
| 07:15:46 | → | kenran joins (~user@user/kenran) |
| 07:16:12 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 07:18:21 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 255 seconds) |
| 07:20:08 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 07:21:21 | → | acidjnk joins (~acidjnk@p200300d6e715c433193c078f58513b55.dip0.t-ipconnect.de) |
| 07:24:58 | → | jinsl- joins (~jinsl@123.117.251.25) |
| 07:25:05 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 07:25:36 | × | jinsl quits (~jinsl@2408:8207:2552:dc20:211:32ff:fec8:6aea) (Ping timeout: 250 seconds) |
| 07:32:25 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 07:34:55 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:c7a:f7d7:990c:5acb) (Remote host closed the connection) |
| 07:39:05 | → | merijn joins (~merijn@145.90.225.7) |
| 07:40:25 | × | vglfr quits (~vglfr@88.155.54.209) (Ping timeout: 240 seconds) |
| 07:40:52 | → | vglfr joins (~vglfr@2a0d:3344:1aaa:7010:64df:5e0:8934:df87) |
| 07:49:27 | → | hsw joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
| 07:53:57 | → | zer0bitz_ joins (~zer0bitz@2001:2003:f443:d600:878:5e67:f0ac:a07d) |
| 07:55:27 | × | zer0bitz quits (~zer0bitz@2001:2003:f443:d600:d2a:4f3:eccf:87eb) (Ping timeout: 265 seconds) |
| 07:56:00 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 08:00:00 | → | zeenk joins (~zeenk@2a02:2f04:a20f:5200::fba) |
| 08:00:38 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:05:12 | → | _ht joins (~Thunderbi@82.174.52.28) |
| 08:11:34 | → | cfricke joins (~cfricke@user/cfricke) |
| 08:14:24 | × | kalj quits (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Quit: Client closed) |
| 08:14:30 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 08:15:21 | → | chanceyan joins (~chanceyan@user/chanceyan) |
| 08:15:37 | → | mbuf joins (~Shakthi@49.207.178.186) |
| 08:16:32 | × | chanceyan quits (~chanceyan@user/chanceyan) (Client Quit) |
| 08:17:36 | × | vglfr quits (~vglfr@2a0d:3344:1aaa:7010:64df:5e0:8934:df87) (Ping timeout: 248 seconds) |
| 08:20:18 | → | vglfr joins (~vglfr@2a0d:3344:1aaa:7010:f119:b6e:3fb7:8f5e) |
| 08:22:32 | × | acidjnk quits (~acidjnk@p200300d6e715c433193c078f58513b55.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 08:24:02 | × | mmhat quits (~mmh@p200300f1c701f14fee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8) |
| 08:27:09 | → | enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
| 08:27:13 | × | oo_miguel quits (~Thunderbi@77-252-46-249.static.ip.netia.com.pl) (Quit: oo_miguel) |
| 08:34:29 | × | vglfr quits (~vglfr@2a0d:3344:1aaa:7010:f119:b6e:3fb7:8f5e) (Ping timeout: 246 seconds) |
| 08:34:42 | → | vglfr joins (~vglfr@88.155.54.209) |
| 08:35:14 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 08:35:48 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9c1f:523e:3299:c913) |
| 08:36:51 | → | ubert joins (~Thunderbi@2a02:8109:abc0:6434:61ed:6a1e:f689:25d3) |
| 08:38:41 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 08:39:43 | × | thegeekinside quits (~thegeekin@189.180.38.222) (Ping timeout: 276 seconds) |
| 08:40:10 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9c1f:523e:3299:c913) (Ping timeout: 260 seconds) |
| 08:40:20 | chiselfu1e | is now known as chiselfuse |
| 08:42:20 | × | merijn quits (~merijn@145.90.225.7) (Ping timeout: 265 seconds) |
| 08:45:00 | × | ft quits (~ft@p4fc2a88b.dip0.t-ipconnect.de) (Quit: leaving) |
| 08:47:32 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 08:47:56 | → | gensyst joins (~gensyst@user/gensyst) |
| 08:48:35 | <gensyst> | Does mkWeakIORef execute the finalizing IO action on the same thread? https://hackage.haskell.org/package/base-4.18.0.0/docs/Data-IORef.html#v:mkWeakIORef |
| 08:48:49 | <gensyst> | (Otherwise, this will be kinda useless for C things that have to be closed on the same thread) |
| 08:49:14 | → | chele joins (~chele@user/chele) |
| 08:49:32 | <[exa]> | I wouldn't bet on that |
| 08:50:38 | <[exa]> | but well, why'd you need that? |
| 08:51:48 | <geekosaur> | bound threads exist in part for C code that uses TLS |
| 08:52:13 | <geekosaur> | but I don't know if weak refs obey that, as opposed to ForeignPtrs |
| 08:52:38 | <[exa]> | like, the commentary below about the IORef operation reordering doesn't leave much hope tbh |
| 08:52:48 | × | drdo quits (~drdo@bl14-14-164.dsl.telepac.pt) (Quit: Ping timeout (120 seconds)) |
| 08:53:10 | → | drdo joins (~drdo@bl14-14-164.dsl.telepac.pt) |
| 08:55:25 | → | nate1 joins (~nate@98.45.169.16) |
| 08:58:08 | <gensyst> | geekosaur, foreign pointers finalizer do execute on the same thread? |
| 08:58:25 | <geekosaur> | they should |
| 08:58:56 | <geekosaur> | if they don't I'd report it as a bug |
| 08:59:44 | <gensyst> | geekosaur, The whole issue is that I've encountered a C "close" function that doesn't return void. It returns an Int, so to handle it correctly (check nonzero) I went with resourcet - type stuff like mkWeakIORef. |
| 08:59:58 | <gensyst> | but now it turns out that won't work, for the different thread reason. |
| 09:00:15 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 265 seconds) |
| 09:00:26 | <gensyst> | The "safest" alternative, create "with" API isn't ideal because I want to open it for a stream and let GC handle closing |
| 09:00:48 | <geekosaur> | I wouldn't want to rely on GC to close in general, tbh |
| 09:00:58 | <gensyst> | Another way is to just ignore that int and create a void wrapper C function, but that's baaaad |
| 09:01:15 | <geekosaur> | you have no guarantees that GC swill run in a timely manner, so resources can stick around for a lot longer than you expect them to |
| 09:02:32 | <gensyst> | by what magic can they make foreignptr run on same thread, but mkWeakIORef not? |
| 09:03:07 | <geekosaur> | uh? weak refs are a lot different than strong ones, and are handled completely differently |
| 09:04:46 | <geekosaur> | this said it is entirely possible that they expect you to do cleanup yourself on the appropriate thread, for the reason I just said. relying on GC for external resource cleanup is pretty bad in general |
| 09:05:08 | <geekosaur> | in fact resourcet exists in large part to avoid that |
| 09:10:28 | <jonathan_> | Building with --pedantic allows me to find imports that aren't needed. Is there a way to remove these automatically? Going through things manually is a bit of a drag. I'm on vscode, using HLS. |
| 09:11:29 | × | jonathan_ quits (~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) (Quit: Leaving) |
| 09:14:02 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 09:17:09 | → | jonathan_ joins (~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) |
| 09:20:07 | <geekosaur> | doesn't HLS have a code action for that? |
| 09:22:47 | → | vpan joins (~0@mail.elitnet.lt) |
| 09:30:39 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:31:00 | → | tremon joins (~tremon@83.80.159.219) |
| 09:36:02 | × | zeenk quits (~zeenk@2a02:2f04:a20f:5200::fba) (Remote host closed the connection) |
| 09:36:24 | → | zeenk joins (~zeenk@2a02:2f04:a20f:5200::7fe) |
| 09:36:59 | → | kalj joins (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) |
| 09:41:54 | → | __monty__ joins (~toonn@user/toonn) |
| 09:42:44 | × | czy quits (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection) |
| 09:48:20 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 10:02:53 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 250 seconds) |
| 10:06:17 | <gensyst> | geekosaur, thanks for discussion |
| 10:06:38 | <gensyst> | What's the best Haskell matrix channel? Is it more active than this IRC chan? |
| 10:07:02 | <geekosaur> | this channel is by far the most active. but #haskell:matrix.org exists |
| 10:07:45 | <geekosaur> | there's also #haskell-space:matrix.org but that's a space / collection of channels |
| 10:08:25 | <gensyst> | interesting how you've stayed on irc |
| 10:08:30 | <gensyst> | what's the idea? |
| 10:09:14 | <geekosaur> | I'm actually on both. but I'm an op and IRC ops from matrix are really painful |
| 10:10:01 | <geekosaur> | so I'm on IRC for most things but there are a few IRC channels which are mostly populated by matrix denizens (and where I'm not an op) so I use matrix for those |
| 10:10:04 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 276 seconds) |
| 10:12:01 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 10:14:52 | <geekosaur> | also I use matrix to monitor from my phone because IRC clients for Android are generally sucky and far too prone to disconnect on you |
| 10:15:10 | → | acidjnk joins (~acidjnk@p200300d6e715c433608801d841343278.dip0.t-ipconnect.de) |
| 10:16:01 | geekosaur[m] | says hello from Element for Android |
| 10:16:25 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 10:17:00 | × | vglfr quits (~vglfr@88.155.54.209) (Ping timeout: 260 seconds) |
| 10:19:05 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 10:20:31 | × | gensyst quits (~gensyst@user/gensyst) (Ping timeout: 240 seconds) |
| 10:21:46 | <gry> | geekosaur: there is quasseldroid, which runs a core elsewhere (you need to host it). I have found it amazingly friendly, including for an op. |
| 10:22:21 | <geekosaur> | I know about quassel, but I have no elsewhere to run the core/host |
| 10:22:30 | <geekosaur> | at least, not yet |
| 10:22:30 | <gry> | geekosaur: (it is free and open source, though unfortunately not written in haskell (it is in cpp and qt)). |
| 10:23:23 | <geekosaur> | and a big reason I still use IRC is I want greppable logs, which would be on the host with quassel 🙂 |
| 10:23:51 | <gry> | geekosaur: i run it on a tiny vps with "networkpresence"; previously prgmr, scaleway, linode, and a home laptop with static ip and ports forwarded. to be fair, i like the latter option and when my hardware stops being a glorious mess, i most likely will go back to it. |
| 10:23:55 | → | nschoe joins (~q@2a01:e0a:8e:a190:68:b720:5bc4:5867) |
| 10:31:22 | <gry> | geekosaur: there is a web ui for log search of quassel |
| 10:31:44 | <gry> | geekosaur: or you can ssh and export to .txt files, then grep |
| 10:32:09 | <gry> | geekosaur: android's termux includes an awesome ssh client |
| 10:33:01 | × | drdo quits (~drdo@bl14-14-164.dsl.telepac.pt) (Ping timeout: 240 seconds) |
| 10:34:03 | → | drdo joins (~drdo@bl14-14-164.dsl.telepac.pt) |
| 10:39:04 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 10:41:18 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 10:45:10 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 10:45:16 | → | gemmaro joins (~user@240f:74:d1f0:1:ba1:e787:c9e:b1dc) |
| 10:53:24 | → | barcisz joins (~barcisz@79.191.75.215.ipv4.supernova.orange.pl) |
| 11:02:50 | → | vglfr joins (~vglfr@145.224.101.39) |
| 11:05:39 | × | kalj quits (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Quit: Client closed) |
| 11:07:02 | × | vglfr quits (~vglfr@145.224.101.39) (Ping timeout: 246 seconds) |
| 11:09:50 | → | xff0x joins (~xff0x@ai098135.d.east.v6connect.net) |
| 11:24:03 | → | vglfr joins (~vglfr@145.224.101.39) |
| 11:31:18 | → | akegalj joins (~akegalj@89-164-123-55.dsl.iskon.hr) |
| 11:33:45 | × | pyook quits (~puke@user/puke) (Ping timeout: 240 seconds) |
| 11:41:50 | → | monoidal joins (~monoidal@2001:861:3f42:1b60:ceb5:92cc:e114:9355) |
| 11:43:44 | × | vglfr quits (~vglfr@145.224.101.39) (Ping timeout: 252 seconds) |
| 11:47:00 | × | oljenkins quits (~philipp@p5dec4bb3.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 11:48:43 | → | Square joins (~Square4@user/square) |
| 11:50:53 | → | oljenkins joins (~philipp@p5dec4bb3.dip0.t-ipconnect.de) |
| 11:54:36 | × | nschoe quits (~q@2a01:e0a:8e:a190:68:b720:5bc4:5867) (Quit: Switching off) |
| 11:56:45 | × | akegalj quits (~akegalj@89-164-123-55.dsl.iskon.hr) (Ping timeout: 240 seconds) |
| 12:02:41 | → | vglfr joins (~vglfr@37.73.76.54) |
| 12:03:13 | × | terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat) |
| 12:05:06 | → | terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::) |
| 12:10:48 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.8) |
| 12:14:12 | → | elain4 joins (~textual@2601:5c0:8200:990:e188:657f:cc6c:2c3) |
| 12:15:45 | × | xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 240 seconds) |
| 12:16:08 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 12:18:21 | → | xff0x joins (~xff0x@178.255.149.135) |
| 12:23:52 | → | kalj joins (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) |
| 12:30:56 | × | acidjnk quits (~acidjnk@p200300d6e715c433608801d841343278.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 12:32:00 | × | vpan quits (~0@mail.elitnet.lt) (Ping timeout: 255 seconds) |
| 12:32:12 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 12:33:25 | <eldritchcookie[m> | can't believe i can't have a 9223372036854775808 long bytestring |
| 12:34:09 | → | Mohsen joins (~mohsen@196.221.18.142) |
| 12:34:28 | <[exa]> | eldritchcookie[m: where'd you put it? |
| 12:38:49 | → | vpan joins (~0@mail.elitnet.lt) |
| 12:39:13 | vpan | is now known as Guest8211 |
| 12:40:47 | → | titibandit joins (~titibandi@user/titibandit) |
| 12:40:51 | <eldritchcookie[m> | currently ? nowhere but the Bekenstein bound is really far away |
| 12:41:00 | × | vglfr quits (~vglfr@37.73.76.54) (Ping timeout: 255 seconds) |
| 12:41:19 | → | vglfr joins (~vglfr@37.73.76.54) |
| 12:42:35 | Guest8211 | is now known as vpan |
| 12:43:16 | <[exa]> | at that time we'll have new haskell with longer bytestrings |
| 12:43:50 | <[exa]> | (and new computers that might actually support arrays that long) |
| 12:47:15 | <eldritchcookie[m> | anyone here used effectful or a effect system with dynamic effects? how do you structure effects? |
| 12:47:41 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 256 seconds) |
| 12:47:53 | → | akegalj joins (~akegalj@89-164-123-55.dsl.iskon.hr) |
| 12:49:53 | × | Mohsen quits (~mohsen@196.221.18.142) (Quit: Leaving) |
| 12:50:35 | × | xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 250 seconds) |
| 12:52:41 | → | xff0x joins (~xff0x@2405:6580:b080:900:cafc:e64d:9b94:1b2b) |
| 12:55:42 | <eldritchcookie[m> | also [exa] Int is only guaranteed to be able to represent up to 500 million so it could be possible to get a situation where you have a 500GB bytestring |
| 12:56:21 | <eldritchcookie[m> | and wow i don't want to be the person that will debug that |
| 12:56:56 | → | nate1 joins (~nate@98.45.169.16) |
| 13:01:42 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds) |
| 13:05:51 | × | Me-me quits (~Me-me@user/me-me) (Quit: Something has gone terribly, terribly wrong, that being that I'm not here any more.) |
| 13:09:33 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 13:10:49 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 13:18:05 | × | jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 240 seconds) |
| 13:19:44 | <eldritchcookie[m> | does the unit type exist at runtime? |
| 13:20:10 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 13:20:12 | <geekosaur> | no types exist at runtime |
| 13:20:19 | → | jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 13:20:54 | <eldritchcookie[m> | sorry wrong question |
| 13:21:12 | <eldritchcookie[m> | is the unit value represented by anything at runtime? |
| 13:21:33 | <eldritchcookie[m> | or is it optmized away? |
| 13:22:24 | <geekosaur> | it can be optimized away if it can be proven to be strict, otherwise it's a pointer which may be to bottom/exception |
| 13:23:06 | <eldritchcookie[m> | what about sum types? |
| 13:23:25 | <eldritchcookie[m> | like data Ex = Cons1 | Cons2 |
| 13:24:12 | <geekosaur> | same, they will be represented by pointers. in that case they can't be optimized away since you have to be able to distinguish constructors |
| 13:24:41 | <geekosaur> | if there's only one constructor it may be optimized away of proven strict at compile time |
| 13:24:44 | <geekosaur> | *if |
| 13:24:45 | <jade[m]> | https://youtu.be/I4lnCG18TaY |
| 13:25:08 | <jade[m]> | this gives an overview about how haskell on the surface translates into pointers/the heap layout |
| 13:26:03 | → | califax joins (~califax@user/califx) |
| 13:26:35 | → | pyook joins (~puke@user/puke) |
| 13:26:41 | <eldritchcookie[m> | say if i receive an Either String a but am expecting for it to be really rare to get the String should i throw an exception? |
| 13:26:49 | <geekosaur> | in general bottom complicates this kind of optimization |
| 13:27:46 | <geekosaur> | in general I would say avoid exceptions in pure code |
| 13:28:20 | <eldritchcookie[m> | it is in a monad |
| 13:28:43 | <geekosaur> | is it in IO, though? |
| 13:29:21 | <eldritchcookie[m> | yes |
| 13:29:31 | <geekosaur> | (even something like StateT s IO is not a great idea because you will lose the s on exception) |
| 13:30:44 | <eldritchcookie[m> | i am using effectful so i won't lose the state on exception |
| 13:31:25 | <geekosaur> | you're better off asking them, then |
| 13:32:06 | <eldritchcookie[m> | ok, could you explain why we should avoid exceptions in pure code? |
| 13:32:44 | <jade[m]> | because exceptions bad |
| 13:33:07 | <geekosaur> | because they can only be caught in IO and you will lose anything that was being done in the pure code, plus you have no control over when/where it happens |
| 13:33:11 | <jade[m]> | it's always better if functions are total |
| 13:33:12 | <jade[m]> | that's one of the main reasons we write functional code; safety |
| 13:33:27 | <jade[m]> | * we write purely functional code; |
| 13:33:28 | <geekosaur> | in particular throwIO is safer than throw |
| 13:33:39 | <geekosaur> | also because exceptions in pure code can leak out |
| 13:33:44 | <geekosaur> | as bottoms |
| 13:34:02 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 13:34:41 | <geekosaur> | so even if you try to catch them, if you don't fully force evaluation the exception may happen outside your exception handler |
| 13:35:14 | <geekosaur> | but fully forcing evaluation may mean doing more work than necessary |
| 13:35:16 | → | acidjnk joins (~acidjnk@p200300d6e715c4337c794ccf8cdd483c.dip0.t-ipconnect.de) |
| 13:37:00 | → | rf joins (~rf@2605:59c8:1604:2210:be1c:913:3607:51c7) |
| 13:38:48 | <geekosaur> | basically, you don't want to have to reason about bottoms outside of IO if you can help it, but if you use undefined/error/throw you're pretty much forcing yourself to have to reason about it |
| 13:39:33 | <eldritchcookie[m> | ok i am convinced, however assuming normal IO monad is it better for return an Either or to throw an exception with throwIO if there isn't a clear winner what are the pros and cons of each? |
| 13:39:35 | <geekosaur> | also I don't think effectful will save you here. ResourceT + MonadBaseControl would |
| 13:40:02 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 13:40:03 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 13:40:03 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:40:17 | <jade[m]> | eldritchcookie[m: Avoid exceptions as much as possible and only use them at the highest level of composition (imo) |
| 13:40:39 | <jade[m]> | pure/total code is always preferable |
| 13:40:44 | <geekosaur> | I would say reserve exceptions for things you can't recover from, as much as possible |
| 13:40:47 | <jade[m]> | * always preferable and easier to maintain |
| 13:40:51 | <jade[m]> | mhm |
| 13:41:10 | <geekosaur> | if there is a way to recover, use Either or some other in-band failure signal |
| 13:42:12 | <jade[m]> | for this reason I really don't like `head` and usually use something along the lines of `fst <$> uncons` |
| 13:42:27 | <jade[m]> | or destructure directly |
| 13:42:28 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 13:44:21 | <eldritchcookie[m> | basically i am using decode for the size of the message so i probably would need to exit my current level and reconnect isn't this the exact situation where i should use exceptions? |
| 13:45:16 | <jade[m]> | I'm not sure I understand the context but it sounds like a `Maybe` |
| 13:45:22 | <geekosaur> | ^ |
| 13:46:23 | <jade[m]> | Specifically in combination with the Alternative instance if I understand right what you are trying to do |
| 13:47:45 | <eldritchcookie[m> | i have 2 programs communicating, in the function of send i first send a Int and then the message, in the receive i first read 8 bytes and try converting to a Int using decode, if this fails i don't think the situation is recoverable |
| 13:47:45 | × | vglfr quits (~vglfr@37.73.76.54) (Read error: Connection reset by peer) |
| 13:47:48 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 13:48:03 | → | califax joins (~califax@user/califx) |
| 13:48:07 | <geekosaur> | then you have a candidate for an exception |
| 13:49:37 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 13:49:55 | × | cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds) |
| 13:51:26 | → | Digitteknohippie joins (~user@user/digit) |
| 13:52:26 | × | Digit quits (~user@user/digit) (Ping timeout: 252 seconds) |
| 13:54:12 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 13:54:28 | → | califax joins (~califax@user/califx) |
| 13:58:23 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 13:58:52 | × | gurkenglas quits (~gurkengla@dynamic-046-114-179-150.46.114.pool.telefonica.de) (Ping timeout: 276 seconds) |
| 13:59:06 | → | cheater joins (~Username@user/cheater) |
| 14:00:48 | → | thegeekinside joins (~thegeekin@189.180.38.222) |
| 14:00:59 | → | cheater_ joins (~Username@user/cheater) |
| 14:03:23 | × | cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds) |
| 14:03:26 | cheater_ | is now known as cheater |
| 14:03:44 | → | jinsun_ joins (~jinsun@user/jinsun) |
| 14:03:44 | jinsun | is now known as Guest9038 |
| 14:03:44 | × | Guest9038 quits (~jinsun@user/jinsun) (Killed (sodium.libera.chat (Nickname regained by services))) |
| 14:03:44 | jinsun_ | is now known as jinsun |
| 14:05:25 | × | mc47 quits (~mc47@xmonad/TheMC47) (Ping timeout: 240 seconds) |
| 14:06:34 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 14:07:49 | → | shriekingnoise joins (~shrieking@186.137.175.87) |
| 14:12:58 | <dminuoso> | 15:33:36 geekosaur | [13:33:07] because they can only be caught in IO and you will lose anything that was being done in the pure code, plus you have no control over when/where it happens |
| 14:13:03 | <dminuoso> | I think there's something even worse than that. |
| 14:13:11 | <dminuoso> | pure exceptions are imprecise. |
| 14:13:51 | <eldritchcookie[m> | what do you mean by imprecise? |
| 14:14:27 | <dminuoso> | See https://www.microsoft.com/en-us/research/wp-content/uploads/1999/05/except.pdf |
| 14:15:03 | <dminuoso> | Consider something like `error "foo" + error "bar"` |
| 14:15:11 | <dminuoso> | Which error should you get? |
| 14:15:59 | <dminuoso> | Being able to catch only in IO is at best an inconvenience, but the imprecise semantics of them makes it hard to recover knowledge from the fact that you caught one. |
| 14:17:16 | <dminuoso> | Or have any behavior or recovery. |
| 14:18:04 | <dmj`> | johnw: A belated hello o/ :) |
| 14:19:03 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 14:19:35 | <dminuoso> | While it's probably fine if you just take note of the error but propagate it outwards, any recovery will be imprecise and its behavior can change with something mundane as a different optimization level in GHC. |
| 14:20:43 | <geekosaur> | that's a large part of why I said you should only throw an exception if it's a situation you can't recover from |
| 14:22:25 | <jade[m]> | not to mention that it makes recovery more difficult and also less explicit |
| 14:22:47 | <dminuoso> | Well recovery in IO exceptions is just fine. |
| 14:23:02 | <dminuoso> | IO exceptions is a feature that is widely underused in my opinion. |
| 14:23:25 | × | mc47 quits (~mc47@xmonad/TheMC47) (Ping timeout: 240 seconds) |
| 14:23:40 | <dminuoso> | I guess the desire to experiment with functional ideas made things like ExceptT/MonadError far more interesting |
| 14:25:31 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:25:55 | <dminuoso> | That said |
| 14:26:02 | <dminuoso> | :t upon |
| 14:26:03 | <lambdabot> | (Indexable [Int] p, Data s, Data a, Applicative f) => (s -> a) -> p a (f a) -> s -> f s |
| 14:26:44 | <dminuoso> | This thing makes evil use of `error` to recover structural information from arbitrary data structures. |
| 14:26:46 | × | lortabac quits (~lortabac@88.125.6.227) (Quit: WeeChat 2.8) |
| 14:26:49 | <dminuoso> | > (2,4) & upon fst *~ 5 |
| 14:26:51 | <lambdabot> | (10,4) |
| 14:28:59 | <dminuoso> | But for this particular use case its actually benign and safe. |
| 14:29:13 | <dminuoso> | Well. Sort of anyway. |
| 14:32:25 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 14:32:26 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 14:34:59 | × | tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection) |
| 14:35:12 | → | tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
| 14:35:38 | × | kalj quits (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |
| 14:35:47 | → | Square2 joins (~Square4@user/square) |
| 14:36:11 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 14:36:35 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 14:37:46 | × | Square quits (~Square4@user/square) (Ping timeout: 252 seconds) |
| 14:40:11 | → | vglfr joins (~vglfr@145.224.101.39) |
| 14:40:28 | × | vglfr quits (~vglfr@145.224.101.39) (Read error: Connection reset by peer) |
| 14:40:43 | → | vglfr joins (~vglfr@37.73.72.183) |
| 14:44:53 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 14:52:20 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 14:53:56 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 15:07:43 | × | erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 260 seconds) |
| 15:07:49 | × | ubert quits (~Thunderbi@2a02:8109:abc0:6434:61ed:6a1e:f689:25d3) (Remote host closed the connection) |
| 15:08:00 | → | erisco joins (~erisco@d24-141-66-165.home.cgocable.net) |
| 15:12:47 | → | jero98772 joins (~jero98772@2800:484:1d84:9000::2) |
| 15:16:09 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251) |
| 15:18:06 | → | nick___ joins (~nick@50.86.118.19) |
| 15:23:59 | × | jonathan_ quits (~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) (Ping timeout: 246 seconds) |
| 15:26:02 | → | polyphem joins (~polyphem@ip-109-43-50-210.web.vodafone.de) |
| 15:27:26 | → | pharonix71 joins (~pharonix7@user/pharonix71) |
| 15:33:08 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1)) |
| 15:34:14 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 15:44:09 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 15:44:11 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 15:48:26 | → | gensyst joins (~gensyst@user/gensyst) |
| 15:49:18 | → | mmhat joins (~mmh@p200300f1c701f14fee086bfffe095315.dip0.t-ipconnect.de) |
| 15:49:25 | <gensyst> | When attoparsec returns back unprocessed result (ByteString), was that ByteString provided efficiently with "unsafe" operations under the hood, or was it done inefficiently with O(n) copy operations? |
| 15:49:32 | × | xff0x quits (~xff0x@2405:6580:b080:900:cafc:e64d:9b94:1b2b) (Ping timeout: 246 seconds) |
| 15:49:55 | → | xff0x joins (~xff0x@ai098135.d.east.v6connect.net) |
| 15:52:52 | <c_wraith> | gensyst: probably neither? |
| 15:53:46 | Square2 | is now known as Square |
| 15:54:12 | <c_wraith> | gensyst: I'd expect it to use a call like drop on its latest input |
| 15:56:24 | <c_wraith> | gensyst: ByteString is intended for O(1) substring-like calls. The danger is accidentally holding on to a large buffer, not accidentally copying. |
| 15:58:35 | → | rburkholder joins (~blurb@96.45.2.121) |
| 15:59:02 | × | Square quits (~Square4@user/square) (Remote host closed the connection) |
| 16:06:01 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 16:07:00 | × | vpan quits (~0@mail.elitnet.lt) (Quit: Leaving.) |
| 16:10:10 | <gensyst> | c_wraith, makes sense, thanks! |
| 16:14:29 | Digitteknohippie | is now known as Digit |
| 16:20:41 | → | werneta joins (~werneta@2600:1700:4819:103f:d664:ab08:b618:a81) |
| 16:22:25 | × | vglfr quits (~vglfr@37.73.72.183) (Ping timeout: 255 seconds) |
| 16:22:49 | → | vglfr joins (~vglfr@2a0d:3344:1aaa:7010:b88c:e5df:9589:2051) |
| 16:27:25 | × | nick___ quits (~nick@50.86.118.19) (Ping timeout: 240 seconds) |
| 16:28:59 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:29:02 | × | mbuf quits (~Shakthi@49.207.178.186) (Quit: Leaving) |
| 16:29:23 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 16:30:50 | × | werneta quits (~werneta@2600:1700:4819:103f:d664:ab08:b618:a81) (Remote host closed the connection) |
| 16:32:02 | × | zeenk quits (~zeenk@2a02:2f04:a20f:5200::7fe) (Quit: Konversation terminated!) |
| 16:33:39 | × | polyphem quits (~polyphem@ip-109-43-50-210.web.vodafone.de) (Ping timeout: 255 seconds) |
| 16:34:23 | × | vglfr quits (~vglfr@2a0d:3344:1aaa:7010:b88c:e5df:9589:2051) (Ping timeout: 264 seconds) |
| 16:35:27 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
| 16:39:17 | → | hayden_ joins (~hayden@158.123.160.43) |
| 16:39:35 | × | gemmaro quits (~user@240f:74:d1f0:1:ba1:e787:c9e:b1dc) (Remote host closed the connection) |
| 16:41:23 | → | vglfr joins (~vglfr@145.224.101.39) |
| 16:47:09 | × | hayden_ quits (~hayden@158.123.160.43) (Remote host closed the connection) |
| 16:47:28 | → | hayden_ joins (~hayden@158.123.160.43) |
| 16:48:04 | × | mmhat quits (~mmh@p200300f1c701f14fee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8) |
| 16:49:42 | → | jonathan_ joins (~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) |
| 16:57:04 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 16:58:33 | → | nate1 joins (~nate@98.45.169.16) |
| 17:01:09 | × | hayden_ quits (~hayden@158.123.160.43) (Ping timeout: 255 seconds) |
| 17:03:21 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds) |
| 17:04:26 | × | akegalj quits (~akegalj@89-164-123-55.dsl.iskon.hr) (Ping timeout: 246 seconds) |
| 17:07:45 | × | gensyst quits (~gensyst@user/gensyst) (Quit: Leaving) |
| 17:08:54 | → | hayden_ joins (~hayden@158.123.160.43) |
| 17:10:43 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 17:11:35 | → | econo joins (uid147250@user/econo) |
| 17:12:00 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 17:15:25 | × | hayden_ quits (~hayden@158.123.160.43) (Ping timeout: 240 seconds) |
| 17:17:45 | → | LMonty joins (~Thunderbi@ip178-67.outside.westmont.edu) |
| 17:18:15 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 17:27:10 | → | hayden_ joins (~hayden@158.123.160.43) |
| 17:30:01 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds) |
| 17:31:50 | × | hayden_ quits (~hayden@158.123.160.43) (Ping timeout: 250 seconds) |
| 17:35:50 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 17:37:36 | × | vglfr quits (~vglfr@145.224.101.39) (Read error: Connection reset by peer) |
| 17:39:59 | → | segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) |
| 17:40:22 | <segfaultfizzbuzz> | "haskell requires gc" and "you can write hardware in haskell (e.g. output verilog/program an fpga" -- how are these compatible |
| 17:46:25 | <yushyin> | what's the problem? |
| 17:48:05 | <segfaultfizzbuzz> | it seems like it would be hard to have a "heap" for logic |
| 17:48:14 | → | vglfr joins (~vglfr@145.224.101.39) |
| 17:48:50 | × | remedan_ quits (~remedan@ip-94-112-0-18.bb.vodafone.cz) (Read error: Connection reset by peer) |
| 17:50:25 | <ddellacosta> | I'm not much of an expert on this area of Haskell, but I think most of the time wrt the latter the Haskell program is outputting code to be fed into some other system, like with copilot https://copilot-language.github.io/ |
| 17:50:55 | → | ph88 joins (~ph88@213.23.78.154) |
| 17:51:01 | <segfaultfizzbuzz> | well okay, but it seems like if you are outputting logic then there would be rather strict limits on "allocation" and the like,... |
| 17:52:14 | <yushyin> | do you have a specific project in mind? i can think of clash, which is a high level description language (an eDSL in haskell) to generate verilog/vhdl |
| 17:52:25 | <segfaultfizzbuzz> | more that i am just curious to understand |
| 17:56:19 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 18:01:12 | <monochrom> | jhc proves that Haskell doesn't require GC. >:) |
| 18:02:27 | <Hecate> | segfaultfizzbuzz: Hardware description language is not C code for micro-controllers, it just describes Hardware. It's not for running Haskell code on it |
| 18:02:41 | <monochrom> | But generally, ignore Internet hearsay. |
| 18:03:16 | × | vglfr quits (~vglfr@145.224.101.39) (Ping timeout: 276 seconds) |
| 18:04:19 | <monochrom> | But yeah you can make an EDSL to be a hardware description language. |
| 18:04:47 | <monochrom> | At which point the EDSL can live in pretty much any half-decent language. |
| 18:04:48 | × | segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 248 seconds) |
| 18:05:16 | <monochrom> | And if it's DSL without E, it can be coded up in pretty much any language, half-decent or not. |
| 18:05:49 | <monochrom> | Definition: A "half-decent" language is one that is good enough to admit EDSLs. >:) |
| 18:06:07 | → | vglfr joins (~vglfr@145.224.101.39) |
| 18:06:11 | × | monoidal quits (~monoidal@2001:861:3f42:1b60:ceb5:92cc:e114:9355) (Quit: Client closed) |
| 18:06:15 | <monochrom> | (Counterexample: That rules out C. >:) ) |
| 18:06:59 | <monochrom> | (OK OK, I forgot that CPP could help. I saw a C macro library that let you write Pascal...) |
| 18:08:31 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 18:09:45 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 18:10:37 | → | hayden_ joins (~hayden@158.123.160.43) |
| 18:14:56 | × | vglfr quits (~vglfr@145.224.101.39) (Ping timeout: 254 seconds) |
| 18:17:37 | × | hayden_ quits (~hayden@158.123.160.43) (Ping timeout: 255 seconds) |
| 18:18:28 | × | markasoftware quits (~quassel@107.161.26.124) (Quit: No Ping reply in 180 seconds.) |
| 18:18:31 | × | barcisz quits (~barcisz@79.191.75.215.ipv4.supernova.orange.pl) (Quit: Connection closed) |
| 18:18:50 | → | barcisz joins (~barcisz@79.191.75.215.ipv4.supernova.orange.pl) |
| 18:19:44 | → | markasoftware joins (~quassel@107.161.26.124) |
| 18:19:56 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 18:25:37 | × | mauke quits (~mauke@user/mauke) (Quit: off) |
| 18:30:20 | → | bilegeek joins (~bilegeek@2600:1008:b019:587b:c252:9330:8577:b9b1) |
| 18:32:00 | × | ph88 quits (~ph88@213.23.78.154) (Quit: Leaving) |
| 18:32:23 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 18:32:32 | × | LMonty quits (~Thunderbi@ip178-67.outside.westmont.edu) (Quit: LMonty) |
| 18:32:55 | × | jinsl- quits (~jinsl@123.117.251.25) (Ping timeout: 255 seconds) |
| 18:33:01 | → | mauke joins (~mauke@user/mauke) |
| 18:33:38 | → | jinsl joins (~jinsl@123.117.251.25) |
| 18:35:32 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-196c-66e3-323f-365c.rev.sfr.net) |
| 18:37:37 | → | ft joins (~ft@p4fc2a88b.dip0.t-ipconnect.de) |
| 18:49:53 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 18:51:09 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 18:53:36 | → | Joao003 joins (~Joao003@2804:840:8309:0:bd3a:fbd2:7590:2609) |
| 18:54:06 | <Joao003> | Any equivalents to APL's fork construct? |
| 19:00:21 | → | vglfr joins (~vglfr@2a0d:3344:1aaa:7010:b88c:e5df:9589:2051) |
| 19:00:30 | <eldritchcookie[m> | what does it do? |
| 19:01:22 | → | Inst_ joins (~Inst@2601:6c4:4081:54f0:e436:a84f:8a3c:7b5) |
| 19:02:18 | → | eggplant_ joins (~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251) |
| 19:02:25 | <mauke> | liftA2 |
| 19:04:43 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251) (Ping timeout: 248 seconds) |
| 19:04:43 | × | Inst quits (~Inst@2601:6c4:4081:54f0:e436:a84f:8a3c:7b5) (Ping timeout: 248 seconds) |
| 19:05:16 | → | u0_a202 joins (~u0_a202@47.60.32.137) |
| 19:05:45 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
| 19:05:50 | × | Benzi-Junior quits (~BenziJuni@dsl-149-66-52.hive.is) (Ping timeout: 265 seconds) |
| 19:06:01 | → | B-J joins (~BenziJuni@dsl-149-64-86.hive.is) |
| 19:06:23 | × | hueso quits (~root@user/hueso) (Quit: No Ping reply in 210 seconds.) |
| 19:07:43 | → | hueso joins (~root@user/hueso) |
| 19:09:25 | × | vglfr quits (~vglfr@2a0d:3344:1aaa:7010:b88c:e5df:9589:2051) (Read error: Connection reset by peer) |
| 19:10:05 | → | vglfr joins (~vglfr@145.224.101.39) |
| 19:13:38 | → | nick___ joins (~nick@98.186.193.170) |
| 19:13:58 | u0_a202 | is now known as dom0 |
| 19:15:45 | → | segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) |
| 19:16:39 | → | Digitteknohippie joins (~user@user/digit) |
| 19:16:59 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds) |
| 19:17:51 | × | Digit quits (~user@user/digit) (Ping timeout: 241 seconds) |
| 19:18:12 | <fr33domlover> | o/ If I use an acid-state "database" from a single thread, so never concurrent queries/updates, does it still make sense to use acid-state? Or is there some less powerful but more efficient-for-my-use-case option? |
| 19:20:21 | <fr33domlover> | (More precisely, queries might be concurrent but updates only from a single thread) |
| 19:20:22 | × | dom0 quits (~u0_a202@47.60.32.137) (Remote host closed the connection) |
| 19:21:42 | × | Joao003 quits (~Joao003@2804:840:8309:0:bd3a:fbd2:7590:2609) (Quit: Leaving) |
| 19:21:43 | × | vglfr quits (~vglfr@145.224.101.39) (Read error: Connection reset by peer) |
| 19:23:22 | → | vglfr joins (~vglfr@145.224.101.39) |
| 19:23:25 | Digitteknohippie | is now known as Digit |
| 19:26:23 | <c_wraith> | I wouldn't use acid-state under any circumstances |
| 19:27:17 | × | vglfr quits (~vglfr@145.224.101.39) (Read error: Connection reset by peer) |
| 19:29:31 | → | remedan joins (~remedan@ip-94-112-0-18.bb.vodafone.cz) |
| 19:30:18 | → | pavonia joins (~user@user/siracusa) |
| 19:31:04 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 19:31:45 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 19:34:12 | × | eggplant_ quits (~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251) (Remote host closed the connection) |
| 19:34:35 | → | accord joins (uid568320@id-568320.hampstead.irccloud.com) |
| 19:39:08 | → | mei joins (~mei@user/mei) |
| 19:47:44 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
| 19:49:56 | × | hugo- quits (znc@verdigris.lysator.liu.se) (Ping timeout: 246 seconds) |
| 19:51:12 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 19:51:50 | <somerandomnick> | fr33domlover: from my experience in GHC 8, `readMVar` is already very efficient, although atomic |
| 19:53:28 | <somerandomnick> | @index readMVar |
| 19:53:28 | <lambdabot> | Control.Concurrent.MVar, Control.Concurrent |
| 19:56:32 | × | pharonix71 quits (~pharonix7@user/pharonix71) (Remote host closed the connection) |
| 19:57:12 | → | pharonix71 joins (~pharonix7@user/pharonix71) |
| 19:57:24 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 19:58:20 | → | bratwurst joins (~dfadsva@2604:3d09:207f:f650::9c24) |
| 19:58:55 | × | juri_ quits (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 260 seconds) |
| 19:59:28 | × | segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 248 seconds) |
| 19:59:42 | → | juri_ joins (~juri@79.140.114.190) |
| 19:59:46 | → | zeenk joins (~zeenk@2a02:2f04:a20f:5200::7fe) |
| 20:05:28 | → | nick3 joins (~nick@98.186.193.170) |
| 20:07:52 | → | hugo- joins (znc@verdigris.lysator.liu.se) |
| 20:08:00 | × | nick___ quits (~nick@98.186.193.170) (Ping timeout: 248 seconds) |
| 20:16:55 | → | hochata joins (~user@user/hochata) |
| 20:17:46 | × | jonathan_ quits (~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) (Ping timeout: 255 seconds) |
| 20:18:45 | × | juri_ quits (~juri@79.140.114.190) (Read error: Connection reset by peer) |
| 20:23:56 | <jade[m]> | is haskell.org down? |
| 20:24:21 | <mauke> | https://www.haskell.org/ loads for me |
| 20:24:34 | → | juri_ joins (~juri@79.140.114.190) |
| 20:26:15 | → | Square2 joins (~Square4@user/square) |
| 20:27:20 | <jade[m]> | oddly enough it seems to be an ISP problem |
| 20:27:29 | <jade[m]> | with mobile data everything loads fine, whereas with wifi ~50% of domains seem not to resolve properly |
| 20:30:39 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 20:32:59 | → | cheater_ joins (~Username@user/cheater) |
| 20:34:41 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251) |
| 20:35:01 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 20:35:06 | cheater_ | is now known as cheater |
| 20:36:56 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds) |
| 20:38:19 | × | Cale quits (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (Remote host closed the connection) |
| 20:39:07 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251) (Ping timeout: 248 seconds) |
| 20:39:13 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 20:41:56 | → | slack1256 joins (~slack1256@186.11.11.208) |
| 20:43:03 | <slack1256> | I have been playing with monomer. I think this is it, this is the UI library I had been waiting for. |
| 20:43:17 | <slack1256> | Does anyone has experience running it on windows? Is it even possible? |
| 20:45:21 | <jade[m]> | it says it's cross platform |
| 20:46:31 | <slack1256> | Yeah, but with UIs I would like more recent reports. The build uses GLEW and SDL on linux. Those must be a pain to look for on windows. |
| 20:47:28 | Square2 | is now known as Square |
| 20:50:15 | → | cheater_ joins (~Username@user/cheater) |
| 20:52:25 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 20:52:32 | cheater_ | is now known as cheater |
| 20:57:43 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 20:59:20 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 20:59:29 | × | rf quits (~rf@2605:59c8:1604:2210:be1c:913:3607:51c7) (Remote host closed the connection) |
| 21:00:03 | → | nate1 joins (~nate@98.45.169.16) |
| 21:00:28 | × | juri_ quits (~juri@79.140.114.190) (Read error: Connection reset by peer) |
| 21:01:02 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:01:30 | → | juri_ joins (~juri@79.140.114.190) |
| 21:02:46 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 21:04:31 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 21:07:01 | → | nick4 joins (~nick@98.186.193.170) |
| 21:07:12 | × | juri_ quits (~juri@79.140.114.190) (Ping timeout: 250 seconds) |
| 21:07:33 | × | _ht quits (~Thunderbi@82.174.52.28) (Quit: _ht) |
| 21:08:30 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 21:08:36 | × | nick3 quits (~nick@98.186.193.170) (Ping timeout: 255 seconds) |
| 21:11:25 | → | dumarrr^ joins (~dumarrr@c-76-105-96-13.hsd1.ga.comcast.net) |
| 21:15:13 | × | zeenk quits (~zeenk@2a02:2f04:a20f:5200::7fe) (Quit: Konversation terminated!) |
| 21:15:28 | <jackdk> | Everything is a pain on Windows though. |
| 21:16:45 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 240 seconds) |
| 21:19:24 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 21:22:12 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 21:26:54 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:27:35 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 260 seconds) |
| 21:28:09 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 21:28:32 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 248 seconds) |
| 21:28:47 | → | Joao003 joins (~Joao003@2804:840:8309:0:bd3a:fbd2:7590:2609) |
| 21:29:16 | <Joao003> | Is there an equivalent for the S combinator, and in what library is it? |
| 21:30:37 | <jackdk> | S is (<*>) for the ((->) r) applicative, isn't it? (Don't quote me here) |
| 21:30:53 | <Rembane> | There should be one among the birds |
| 21:30:55 | <jade[m]> | can't you just s f g x = f x (g x)? |
| 21:31:20 | <hpc> | > (f <*> g) x |
| 21:31:22 | <lambdabot> | error: |
| 21:31:22 | <lambdabot> | • Could not deduce (Show a0) arising from a use of ‘f’ |
| 21:31:22 | <lambdabot> | from the context: FromExpr t |
| 21:31:24 | <jade[m]> | also wait isn't that `>>=` on `(->) r` |
| 21:31:45 | <jade[m]> | > (f >>= g) x |
| 21:31:46 | <lambdabot> | error: |
| 21:31:46 | <lambdabot> | • Could not deduce (FromExpr a0) arising from a use of ‘f’ |
| 21:31:46 | <lambdabot> | from the context: FromExpr t |
| 21:31:55 | <somerandomnick> | @pl \ f g x -> f x (g x) |
| 21:31:55 | <lambdabot> | ap |
| 21:31:58 | <jackdk> | % :t (<*>) @ ((->) _) |
| 21:31:58 | <yahb2> | <interactive>:1:11: error: parse error on input ‘->’ |
| 21:32:12 | <somerandomnick> | @type ap |
| 21:32:13 | <lambdabot> | Monad m => m (a -> b) -> m a -> m b |
| 21:32:28 | <somerandomnick> | @type (>>=) |
| 21:32:29 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 21:32:39 | <jackdk> | Ah, so it is what I said: `(<*>)` on the `((->) r)` applicative |
| 21:32:45 | <somerandomnick> | 🙏 |
| 21:32:48 | × | slack1256 quits (~slack1256@186.11.11.208) (Remote host closed the connection) |
| 21:32:52 | <jade[m]> | mh |
| 21:33:07 | <somerandomnick> | @type (<*>) |
| 21:33:07 | <ncf> | >>= is the same but with the arguments to f flipped |
| 21:33:08 | <lambdabot> | Applicative f => f (a -> b) -> f a -> f b |
| 21:33:24 | <jade[m]> | ncf: ah yeah, was thinking of that |
| 21:33:36 | → | Kuttenbrunzer joins (~Kuttenbru@2a02:8108:8b80:1d48::28da) |
| 21:34:00 | <jade[m]> | I remember because I did some shenaningans with `(>>= (==))` as a fixed point thingy before |
| 21:35:11 | × | ddellacosta quits (~ddellacos@static-198-44-136-216.cust.tzulo.com) (Quit: WeeChat 3.8) |
| 21:37:30 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 21:37:43 | → | bilegeek_ joins (~bilegeek@225.sub-174-208-233.myvzw.com) |
| 21:38:27 | → | zeenk joins (~zeenk@2a02:2f04:a20f:5200::7fe) |
| 21:38:52 | → | ddellacosta joins (~ddellacos@static-198-44-136-216.cust.tzulo.com) |
| 21:40:08 | × | bilegeek quits (~bilegeek@2600:1008:b019:587b:c252:9330:8577:b9b1) (Ping timeout: 250 seconds) |
| 21:41:49 | → | Wauchope joins (~Wauchope@cpc86639-seve26-2-0-cust168.13-3.cable.virginm.net) |
| 21:42:05 | × | shriekingnoise quits (~shrieking@186.137.175.87) (Quit: Quit) |
| 21:42:12 | × | Joao003 quits (~Joao003@2804:840:8309:0:bd3a:fbd2:7590:2609) (Quit: Leaving) |
| 21:42:26 | <Wauchope> | Hi, forgive the probably simple question: I've a list of objects containing various elements |
| 21:42:42 | <Wauchope> | I'm trying to sort the list by the first element, a string |
| 21:42:43 | <monochrom> | "f (a->b) -> f a -> f b" and "(a -> f b) -> f a -> f b" are subtly very different. :) |
| 21:42:54 | × | barcisz quits (~barcisz@79.191.75.215.ipv4.supernova.orange.pl) (Quit: Connection closed) |
| 21:43:11 | → | barcisz joins (~barcisz@79.191.75.215.ipv4.supernova.orange.pl) |
| 21:43:21 | <monochrom> | Is there an example? I don't know what "sort by the first element" means. |
| 21:43:33 | <Wauchope> | sortBy (<here i need somethign to sort by the name attribute of each city>) unorderedObjects is where i'm at |
| 21:43:58 | <Wauchope> | So say, data someObjectHere { name = String .... }, I'm trying to sort a list of someObjectHere by name |
| 21:44:27 | <jade[m]> | sortBy (comparing `on` name) cities? |
| 21:44:54 | <ncf> | sortOn name |
| 21:45:14 | <jade[m]> | wait, where does sortOn come from? |
| 21:45:18 | <Wauchope> | aha, that was much simpler than i thought wasn't aware of sortOn |
| 21:46:03 | <Wauchope> | thank you! |
| 21:46:53 | <jade[m]> | * ``sortBy (compare `on` name) cities``? |
| 21:47:27 | <monochrom> | Data.List has sortOn |
| 21:48:22 | <jade[m]> | neat, I've always been using sortBy (compare `on` f) or sortBy (comparing f) which are equivalent afaik |
| 21:48:28 | <monochrom> | sortBy (comparing `on` name) cities is also right |
| 21:48:42 | <monochrom> | Err wait, no. |
| 21:49:18 | <monochrom> | Haha OK, comparing name, compare `on` name |
| 21:49:45 | <monochrom> | "This is getting out of hand. Now there are two of them!" |
| 21:50:14 | <geekosaur> | comparing came first, then was generalized to on |
| 21:50:15 | <jade[m]> | haha |
| 21:51:29 | <jade[m]> | isn't `on` also some "formal" combinator? |
| 21:51:46 | → | segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) |
| 21:53:42 | <Rembane> | It's a bird! |
| 21:54:19 | → | Guest75 joins (~Guest75@95.91.231.168) |
| 21:54:35 | → | Guest42 joins (~Guest42@95.91.231.168) |
| 21:54:47 | <monochrom> | @type on |
| 21:54:48 | <lambdabot> | (b -> b -> c) -> (a -> b) -> a -> a -> c |
| 21:55:36 | <monochrom> | (b -> b -> c) -> (c -> n, b -> c) -> c -> n -> n |
| 21:55:47 | <monochrom> | err wait no, doesn't work that way haha |
| 21:55:48 | × | enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
| 21:55:48 | <Rembane> | Psi combinator according to this page: https://hackage.haskell.org/package/data-aviary-0.4.0/docs/Data-Aviary-Birds.html |
| 21:55:48 | <somerandomnick> | @type \ f g x -> f x (g x) |
| 21:55:49 | <lambdabot> | (t1 -> t2 -> t3) -> (t1 -> t2) -> t1 -> t3 |
| 21:56:06 | <monochrom> | (Trying poorly to make a pun on BBC and CNN) |
| 21:56:38 | <monochrom> | "psi bird" sounds very sus. |
| 21:56:58 | jade[m] | uploaded an image: (24KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/vkGEOJJFTePopxCcIKSlqgbM/SmartSelect_20230427_235636_Firefox.jpg > |
| 21:56:59 | <jade[m]> | Seems to be a specific case of this more general bird? |
| 21:57:22 | <somerandomnick> | @compose djinn type on |
| 21:57:23 | <lambdabot> | f a b c _ = a (b c) (b c) |
| 21:57:32 | <somerandomnick> | nvm |
| 21:58:45 | × | michalz quits (~michalz@185.246.207.197) (Remote host closed the connection) |
| 21:59:34 | <Rembane> | This is a very particular rabbithole: https://raw.githubusercontent.com/codereport/Content/main/Publications/Combinatory_Logic_and_Combinators_in_Array_Languages.pdf |
| 21:59:57 | <ncf> | it's `flip contramap` for an appropriate contravariant functor |
| 22:00:12 | <monochrom> | Is "Devokies" a cross between Dvorak and wookiees? >:) |
| 22:00:24 | <ncf> | in fact that's how Comparison's contramap is defined https://hackage.haskell.org/package/base-4.18.0.0/docs/src/Data.Functor.Contravariant.html#line-254 |
| 22:01:10 | <monochrom> | "Dvorak's Symphony no. 10: Symphony for Wookiees" |
| 22:01:32 | <jade[m]> | I have yet to read up on what all the prefixed classes mean, like Pro-, Contra-, etc |
| 22:01:48 | <jade[m]> | as well as Bi- though I'm not that uncertain about what it means |
| 22:02:21 | <geekosaur> | and then you run into zygohistomorphic prepromorphisms and your head explodes |
| 22:02:46 | <jade[m]> | mhm |
| 22:03:31 | <geekosaur> | (it's more a meme than something useful 🙂 ) |
| 22:03:50 | <somerandomnick> | profunctors are like arrows, but no1 uses arrows anymore 😭 |
| 22:03:59 | <jade[m]> | I assumed, but this is part of why I love math |
| 22:04:08 | <Rembane> | It's a good head explosion though |
| 22:04:25 | <jade[m]> | somerandomnick: also gotta read up on that even though I have a rough idea on what it means |
| 22:04:52 | <somerandomnick> | (->) is an arrow |
| 22:04:54 | <jade[m]> | I have not yet seen applications for stuff like that besides type-theoretical stuff |
| 22:05:05 | <somerandomnick> | but ofc monadic notation is so much more convenient.. i get it |
| 22:05:05 | <jade[m]> | somerandomnick: I'm aware |
| 22:05:09 | × | elain4 quits (~textual@2601:5c0:8200:990:e188:657f:cc6c:2c3) (Quit: Textual IRC Client: www.textualapp.com) |
| 22:05:18 | × | thegeekinside quits (~thegeekin@189.180.38.222) (Ping timeout: 255 seconds) |
| 22:06:11 | <jade[m]> | iirc an arrow is just a morphism between categories |
| 22:06:21 | <jade[m]> | unless that's completely wrong |
| 22:06:27 | <jade[m]> | which it probably is |
| 22:06:29 | × | nick4 quits (~nick@98.186.193.170) (Read error: Connection reset by peer) |
| 22:06:38 | <jade[m]> | I should read up on category theory |
| 22:06:57 | <int-e> | arrow = morphism |
| 22:07:30 | <jade[m]> | ah |
| 22:07:32 | <monochrom> | The Arrow class is pretty different from category theory morphisms. |
| 22:07:51 | → | nick4 joins (~nick@98.186.193.170) |
| 22:08:12 | <jade[m]> | I was recently disappointed to learn that hask apparently isn't a "real" category |
| 22:08:16 | <int-e> | I'm case-sensitive. |
| 22:08:26 | <jade[m]> | not that I know what it implies, just thought it was interesting |
| 22:08:27 | <monochrom> | One thing is there is always a conversion from (A->B) to (MyArrow A B), which doesn't hold for arbitrary categories. |
| 22:09:02 | <monochrom> | Another is that &&& and *** do something that is at least cartesian-closed categories, probably more. |
| 22:09:07 | <somerandomnick> | the arrow also didnt bring more composability, as they also fall back on transformers |
| 22:09:13 | <somerandomnick> | +class |
| 22:10:05 | <ncf> | i don't think Arrow requires closure? |
| 22:10:06 | <monochrom> | Hask can be a real category, if someone wrote it up. |
| 22:10:12 | <somerandomnick> | Hask is a category alright |
| 22:10:33 | <ncf> | unless it just inherits it from Hask |
| 22:10:48 | <monochrom> | Then again, I could be a real programmer, if I worked myself up for it. >:) |
| 22:11:23 | <int-e> | The `arr` function is a particular natural transformation. |
| 22:11:27 | <ncf> | i guess it's not clear what this should even mean |
| 22:12:11 | <jade[m]> | monochrom: is it so much work or are people just not interested in it |
| 22:12:33 | <int-e> | err |
| 22:12:37 | <monochrom> | Economics says the two are equivalent. >:) |
| 22:12:49 | <int-e> | never mind, there is no underlying functor |
| 22:13:27 | <somerandomnick> | int-e: its all about `fmap` |
| 22:13:29 | <int-e> | Arrow is weird :-P |
| 22:13:38 | <monochrom> | But there is a third factor. Whatever you write up, someone will disagree with part of it. |
| 22:13:44 | <int-e> | somerandomnick: yeah, that was just wrong. |
| 22:13:50 | <somerandomnick> | arrow class wont help you make Hask a category |
| 22:14:37 | <int-e> | It can embed some non-Hask categories into Haskell. |
| 22:15:41 | <jade[m]> | what I heard the issue was is seq in combination with bottom and composition |
| 22:15:50 | <monochrom> | But take consolation in the fact that we still haven't written up either a denotational or an operation semantics of Haskell2010. >:) |
| 22:15:51 | × | Kuttenbrunzer quits (~Kuttenbru@2a02:8108:8b80:1d48::28da) (Quit: Where is it) |
| 22:16:01 | <ncf> | presumably if you view k as a profunctor then arr :: (a -> b) -> a `k` b should be a dinatural transformation between (->) and k |
| 22:16:15 | <jade[m]> | https://math.andrej.com/2016/08/06/hask-is-not-a-category/ |
| 22:16:16 | <ncf> | this probably makes sense even if you don't |
| 22:16:31 | <jade[m]> | this is what I read, I understood maybe 15% |
| 22:17:30 | <monochrom> | You only need these: "Until someone actually does some work, there is no Hask!" "I have not seen a complete construction of such a category yet." |
| 22:17:51 | <jade[m]> | mhm |
| 22:18:19 | <int-e> | `seq` is also weird |
| 22:18:24 | <somerandomnick> | "I told my compiler to evaluate undefined, Hask is not a category" |
| 22:18:25 | <monochrom> | The rest just justifies why writing up the full rigorous technical details matters. |
| 22:18:27 | <somerandomnick> | im so mad. |
| 22:18:40 | → | thegeekinside joins (~thegeekin@189.180.38.222) |
| 22:18:58 | <geekosaur> | and in the end nobody cares because "fast and loose reasoning is morally correct" 🙂 |
| 22:19:33 | <geekosaur> | (oleg vs. andrej in the mathmatch of the century, anyone?) |
| 22:19:46 | <int-e> | talk about getting to the bottom of the issue |
| 22:19:48 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 22:19:59 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 22:20:29 | <monochrom> | But even then you can guess from daily experience that if people on the Internet can even fight each other over "4+2/2" then the full rigorous technical details always matter. :) |
| 22:20:49 | <int-e> | It's an important point... in contexts where you absolutely cannot change semantics. Like, inside a compiler. |
| 22:23:17 | <int-e> | "It" being basically the fact that eta-reduction can be unsound in the presence of `seq` and bottoms. |
| 22:27:08 | <mauke> | monochrom: apparently derived Eq instances have no semantics in Haskell2010 :-) |
| 22:27:17 | <mauke> | so that's cool |
| 22:35:56 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 22:36:52 | → | Me-me joins (~Me-me@user/me-me) |
| 22:39:28 | × | alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-196c-66e3-323f-365c.rev.sfr.net) (Remote host closed the connection) |
| 22:39:28 | × | Guest42 quits (~Guest42@95.91.231.168) (Quit: Connection closed) |
| 22:39:28 | × | Guest75 quits (~Guest75@95.91.231.168) (Quit: Connection closed) |
| 22:40:02 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 22:50:10 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 22:50:39 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 23:05:02 | → | merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) |
| 23:07:27 | × | drdo quits (~drdo@bl14-14-164.dsl.telepac.pt) (Ping timeout: 258 seconds) |
| 23:09:12 | × | nick4 quits (~nick@98.186.193.170) (Ping timeout: 255 seconds) |
| 23:09:17 | → | nick3 joins (~nick@98.186.193.170) |
| 23:13:19 | → | jargon joins (~jargon@184.101.73.92) |
| 23:18:30 | × | Wstfgl0 quits (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Ping timeout: 250 seconds) |
| 23:18:34 | × | tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in) |
| 23:23:42 | × | acidjnk quits (~acidjnk@p200300d6e715c4337c794ccf8cdd483c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 23:26:54 | → | Wstfgl0 joins (~me-me@2602:ff16:3:0:1:dc:beef:d00d) |
| 23:28:11 | × | bratwurst quits (~dfadsva@2604:3d09:207f:f650::9c24) (Ping timeout: 248 seconds) |
| 23:31:31 | × | segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds) |
| 23:32:05 | → | juri_ joins (~juri@217.138.194.165) |
| 23:36:11 | × | Wstfgl0 quits (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Read error: Connection reset by peer) |
| 23:38:29 | → | Wstfgl0 joins (~me-me@2602:ff16:3:0:1:dc:beef:d00d) |
| 23:39:05 | × | merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 23:40:44 | → | segfaultfizzbuzz joins (~segfaultf@23.93.74.212) |
| 23:41:17 | → | mauke_ joins (~mauke@user/mauke) |
| 23:41:44 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:42:58 | × | mauke quits (~mauke@user/mauke) (Ping timeout: 254 seconds) |
| 23:42:58 | mauke_ | is now known as mauke |
| 23:47:31 | × | barcisz quits (~barcisz@79.191.75.215.ipv4.supernova.orange.pl) (Quit: Connection closed) |
| 23:48:31 | × | hochata quits (~user@user/hochata) (Ping timeout: 240 seconds) |
| 23:52:01 | × | Wstfgl0 quits (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Ping timeout: 240 seconds) |
| 23:56:29 | <Axman6> | mauke: which semantics would you like them to have? |
| 23:58:56 | <mauke> | that two values are == iff they have the same constructor and their fields (if any) are all == in order |
| 23:59:19 | <Axman6> | is that what we want for Set? |
| 23:59:42 | <Axman6> | uh, I guess we're just talking about derived |
All times are in UTC on 2023-04-27.