Logs on 2022-11-11 (liberachat/#haskell)
| 00:00:17 | <monochrom> | Especially politicians and management types who really love to make things more difficult. |
| 00:00:32 | <hpc> | this is why i only use zygohistomorphic prepromorphisms |
| 00:01:31 | <EvanR> | way back in the day the very first thing I read about monads was that they are difficult. I think it was on a wikipedia article. Now I know this is terrible writing, it's like buying a d&d adventure module and it tells you to tell the players how they feel about some room or character when they encounter it |
| 00:02:05 | <EvanR> | for the first time |
| 00:02:15 | <EvanR> | (which is a thing, and it's terrible) |
| 00:02:35 | <monochrom> | D&D is easy compared to MtG :) |
| 00:02:39 | <hpc> | D&D's a fun analogy there, sometimes you get things like |
| 00:02:39 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 260 seconds) |
| 00:02:47 | <hpc> | "you enter the room, there is nothing in the left corner" |
| 00:02:58 | <hpc> | "i search the left corner" *d20* |
| 00:03:37 | <dolio> | Is it? They seem pretty dissimilar. |
| 00:04:00 | → | Inst joins (~Liam@c-73-156-203-163.hsd1.fl.comcast.net) |
| 00:04:00 | <dolio> | Oh, "easy compared to," not, "easily compared to." |
| 00:05:09 | <EvanR> | at the very least the writer should do their best with a technical guide and let the reader decide if it's hard, whatever that means for them |
| 00:05:35 | <EvanR> | do your best to put d&d players in a RPG moment, and let them come to their own conclusions about something |
| 00:06:21 | <EvanR> | d&d is probably not the most widely applicable version of this principle but that's all I got |
| 00:08:20 | ski | . o O ( "Warum soll man es einfach machen, wenn man es so schän kompliziert machen kann ?" ) |
| 00:09:01 | <ski> | (also easy resp. hard vs. simple resp. complicated) |
| 00:09:20 | <zzz> | any reason why `(!)` isn't a method of `IsList`? |
| 00:09:40 | <Axman6> | with what type? |
| 00:09:56 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
| 00:10:05 | <Axman6> | not all IsList instances are indexable with Ints meaningfully, Map has an IsList instance |
| 00:10:11 | <Axman6> | and HashMap |
| 00:10:41 | <zzz> | oh i see |
| 00:10:46 | <zzz> | right ou are |
| 00:10:49 | × | Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 260 seconds) |
| 00:11:01 | ski | idly wonders what the `fromListN' was for |
| 00:11:26 | <c_wraith> | I guess for literals where the length is known at compile time |
| 00:11:29 | <dolio> | Lets you allocate storage without using length. |
| 00:11:42 | <Axman6> | it's for list literals, if you have OverloadedLists enabled, the compiler will replace [1,2,3] with fromListN 3 [1,2,3] |
| 00:11:44 | <ski> | ah. makes sense |
| 00:11:55 | <zzz> | i guess i was expecting `list ! n = toList list !! n |
| 00:12:07 | <ski> | yea, but it had both `fromList' and `fromListN' |
| 00:12:50 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 00:13:13 | <Axman6> | sometimes the length isn't known I guess |
| 00:13:19 | <zzz> | ^ |
| 00:13:22 | → | InstX1 joins (~Liam@2603:3017:1052:8000:70c9:7477:6d43:4c0d) |
| 00:13:27 | <monochrom> | Right, IsList is for converting a list-syntax literal to your type, not for accessing your type. |
| 00:14:14 | <monochrom> | To be sure the wording "is list" doesn't say all that. |
| 00:14:29 | <monochrom> | Generally don't trust human-chosen names. |
| 00:14:33 | <geekosaur> | was cribbed from IsString for OverloadedStrings |
| 00:14:55 | <geekosaur> | then again the granddady of these uses Num |
| 00:15:29 | <zzz> | OverloadedNumbers |
| 00:17:13 | × | Inst quits (~Liam@c-73-156-203-163.hsd1.fl.comcast.net) (Ping timeout: 252 seconds) |
| 00:17:56 | <hpc> | that should be an extension just so we can turn off numeric literals working sanely :D |
| 00:18:15 | <hpc> | like now NPlusK became an "extension" |
| 00:19:10 | <davean> | {-# LANGUAGE NoNumbers #-} |
| 00:19:21 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 00:19:26 | <davean> | Just turn of numeric litterals entirely. |
| 00:20:25 | ski | . o O ( s/extension/intension/ ? ) |
| 00:21:19 | × | werneta quits (~werneta@137.79.216.58) (Ping timeout: 260 seconds) |
| 00:21:42 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) |
| 00:22:18 | <Axman6> | {-# LANGUAGE ChurchNumeralsOnly #-} |
| 00:23:02 | <Axman6> | (\f x -> f . f . f $ x) + (\f x -> f . f . f . f . f $ x) |
| 00:23:21 | <hpc> | {-# LANGUAGE ChurchFloats #-} |
| 00:23:27 | <hpc> | gotta build all your numbers out of epsilon |
| 00:23:44 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 00:23:48 | <Axman6> | ... it's only just occured to me that if you have (.), then chruch numerals just become (\f -> f.f.f) |
| 00:24:03 | <Axman6> | am I dumb? Perhaps |
| 00:25:37 | × | Tuplanolla quits (~Tuplanoll@91-159-68-194.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:25:52 | <dolio> | That's because you picked the wrong argument order. |
| 00:26:01 | × | caubert quits (~caubert@user/caubert) (Read error: Software caused connection abort) |
| 00:26:03 | <dolio> | You should pick the one that forces you to write eta-long numerals. |
| 00:26:20 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) (Ping timeout: 260 seconds) |
| 00:27:20 | <dolio> | So you never get confused about different normal forms. |
| 00:28:23 | → | caubert joins (~caubert@user/caubert) |
| 00:30:03 | × | chomwitt quits (~chomwitt@2a02:587:7a0a:c00:1ac0:4dff:fedb:a3f1) (Ping timeout: 248 seconds) |
| 00:31:42 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 00:32:37 | <int-e> | > let church n f x = iterate f x !! n in church 4 (church 3) (+1) 0 |
| 00:32:38 | <lambdabot> | 81 |
| 00:34:02 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:9887:b652:159c:4200) |
| 00:38:09 | → | chromoblob joins (~user@37.113.164.122) |
| 00:40:01 | <zzz> | i like this talk https://www.youtube.com/watch?v=jFk1qpr1ytk is this an abandoned idea? |
| 00:43:22 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 268 seconds) |
| 00:46:10 | × | InstX1 quits (~Liam@2603:3017:1052:8000:70c9:7477:6d43:4c0d) (Ping timeout: 260 seconds) |
| 00:54:44 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 01:00:24 | × | Neuromancer quits (~Neuromanc@user/neuromancer) (Ping timeout: 260 seconds) |
| 01:10:12 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:12:23 | → | jargon joins (~jargon@184.101.188.35) |
| 01:15:20 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds) |
| 01:15:30 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 01:16:19 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:18:45 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 01:18:45 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 01:19:53 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 01:19:59 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 01:21:46 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 01:22:13 | → | catern joins (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) |
| 01:26:32 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 01:27:41 | × | xff0x quits (~xff0x@2405:6580:b080:900:6c11:61e0:a694:e7f1) (Ping timeout: 252 seconds) |
| 01:28:05 | × | Ranhir quits (~Ranhir@157.97.53.139) (Read error: Connection reset by peer) |
| 01:30:09 | → | nate4 joins (~nate@98.45.169.16) |
| 01:31:47 | → | Ranhir joins (~Ranhir@157.97.53.139) |
| 01:35:19 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds) |
| 01:37:35 | → | razetime joins (~quassel@117.193.0.120) |
| 01:39:01 | × | _xor quits (~xor@74.215.182.83) (Quit: brb) |
| 01:39:53 | → | _xor joins (~xor@74.215.182.83) |
| 01:40:43 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 268 seconds) |
| 01:41:03 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer) |
| 01:41:17 | → | Inst joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) |
| 01:41:59 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 01:46:17 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Remote host closed the connection) |
| 01:46:52 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 01:53:00 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 01:53:21 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 01:53:26 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 01:56:36 | × | erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Read error: Software caused connection abort) |
| 01:57:18 | → | causal joins (~user@50.35.83.177) |
| 01:59:16 | → | erisco joins (~erisco@d24-141-66-165.home.cgocable.net) |
| 02:06:49 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 02:12:09 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:12:44 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 260 seconds) |
| 02:17:17 | × | califax quits (~califax@user/califx) (Ping timeout: 255 seconds) |
| 02:17:33 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 02:21:39 | → | califax joins (~califax@user/califx) |
| 02:23:12 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) |
| 02:27:40 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) (Ping timeout: 260 seconds) |
| 02:49:32 | × | Ranhir quits (~Ranhir@157.97.53.139) (Remote host closed the connection) |
| 02:57:04 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds) |
| 02:57:15 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 02:58:14 | → | Ranhir joins (~Ranhir@157.97.53.139) |
| 02:59:10 | × | berberman quits (~berberman@user/berberman) (Ping timeout: 260 seconds) |
| 02:59:21 | → | berberman_ joins (~berberman@user/berberman) |
| 03:01:44 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 03:04:40 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:04:40 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:04:40 | finn_elija | is now known as FinnElija |
| 03:06:15 | → | zebrag joins (~chris@user/zebrag) |
| 03:07:35 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 03:16:19 | × | td_ quits (~td@83.135.9.55) (Ping timeout: 260 seconds) |
| 03:16:29 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 03:17:03 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 03:18:01 | → | td_ joins (~td@83.135.9.13) |
| 03:18:09 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 03:18:17 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 246 seconds) |
| 03:20:00 | × | Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds) |
| 03:23:58 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 03:27:33 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 03:30:20 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) |
| 03:31:10 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 03:31:17 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 03:31:36 | → | nate4 joins (~nate@98.45.169.16) |
| 03:35:55 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
| 03:37:27 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 03:43:49 | → | polo joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 03:45:13 | money | is now known as Guest647 |
| 03:50:30 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
| 03:52:49 | → | rekahsoft joins (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-156.dsl.bell.ca) |
| 03:53:54 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 03:54:44 | × | polo quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 04:00:39 | × | razetime quits (~quassel@117.193.0.120) (Ping timeout: 260 seconds) |
| 04:02:43 | × | mcglk quits (~mcglk@131.191.49.120) (Ping timeout: 252 seconds) |
| 04:11:50 | → | mcglk joins (~mcglk@131.191.49.120) |
| 04:13:48 | × | danza quits (~francesco@45.red-79-153-2.dynamicip.rima-tde.net) (Read error: Connection timed out) |
| 04:15:41 | × | oo_miguel[m] quits (~oomiguelm@2001:470:69fc:105::1:5ab0) (Read error: Software caused connection abort) |
| 04:15:53 | → | oo_miguel[m] joins (~oomiguelm@2001:470:69fc:105::1:5ab0) |
| 04:18:44 | × | vglfr quits (~vglfr@145.224.100.100) (Ping timeout: 260 seconds) |
| 04:20:09 | × | TonyStone quits (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Remote host closed the connection) |
| 04:21:04 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds) |
| 04:24:15 | → | TonyStone joins (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) |
| 04:27:29 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 04:27:55 | → | bilegeek joins (~bilegeek@2600:1008:b023:888a:c234:abac:d5ca:c1d6) |
| 04:28:55 | × | TonyStone quits (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Remote host closed the connection) |
| 04:31:20 | → | TonyStone joins (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) |
| 04:31:59 | → | razetime joins (~quassel@117.193.0.120) |
| 04:34:15 | → | chromoblob joins (~user@37.113.164.122) |
| 04:37:45 | × | cawfee quits (~root@2406:3003:2077:2758::babe) (Read error: Software caused connection abort) |
| 04:38:16 | → | nate4 joins (~nate@98.45.169.16) |
| 04:39:30 | × | YoungFrog quits (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Read error: Software caused connection abort) |
| 04:39:51 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 04:41:41 | → | cawfee joins (~root@2406:3003:2077:2758::babe) |
| 04:42:47 | → | YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) |
| 04:42:52 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds) |
| 04:44:31 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 04:45:43 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 04:49:01 | → | listeners joins (~sdenynine@user/mixfix41) |
| 04:52:37 | → | bloomndoom joins (~bloomndoo@115.240.194.54) |
| 04:55:33 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 04:57:35 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 04:59:27 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 04:59:28 | × | jinsun quits (~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services))) |
| 04:59:28 | jinsun__ | is now known as jinsun |
| 05:02:28 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 05:05:24 | <bloomndoom> | im getting this error when installing haskell through ghcup `curl: (56) OpenSSL SSL_read: error:0A000126:SSL routines::unexpected eof while reading, errno 0 |
| 05:05:24 | <bloomndoom> | "curl -Lf https://downloads.haskell.org/~ghcup/0.1.18.0/x86_64-linux-ghcup-0.1.18.0" failed!` i'm on arch with openssl version 3.0.7 |
| 05:14:44 | × | bloomndoom quits (~bloomndoo@115.240.194.54) (Ping timeout: 260 seconds) |
| 05:26:47 | <Axman6> | @tell bloomndoom Did you try retrying the install command? I ran that curl line on my mac and it downloaded successfully; could just be a network issue |
| 05:26:48 | <lambdabot> | Consider it noted. |
| 05:26:52 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
| 05:27:05 | → | nate4 joins (~nate@98.45.169.16) |
| 05:27:34 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 05:27:49 | × | fluxit quits (~fluxit@2604:a880:1:20::ab:1001) (Read error: Software caused connection abort) |
| 05:28:47 | ormaaj | is now known as ormaaj2 |
| 05:28:57 | → | fluxit joins (~fluxit@2604:a880:1:20::ab:1001) |
| 05:30:29 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds) |
| 05:31:51 | → | polo joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 05:31:57 | × | polo quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Changing host) |
| 05:31:57 | → | polo joins (~polo@user/polo) |
| 05:32:00 | polo | is now known as money |
| 05:32:46 | → | bloomndoom joins (~bloomndoo@115.240.194.54) |
| 05:32:47 | × | bloomndoom quits (~bloomndoo@115.240.194.54) (Client Quit) |
| 05:33:00 | → | bloomndoom joins (~bloomndoo@115.240.194.54) |
| 05:33:05 | × | bloomndoom quits (~bloomndoo@115.240.194.54) (Client Quit) |
| 05:33:24 | → | bloomndoom joins (~bloomndoo@115.240.194.54) |
| 05:33:25 | × | bloomndoom quits (~bloomndoo@115.240.194.54) (Client Quit) |
| 05:33:39 | → | bloomndoom joins (~bloomndoo@115.240.194.54) |
| 05:33:41 | × | bloomndoom quits (~bloomndoo@115.240.194.54) (Client Quit) |
| 05:35:00 | → | mikoto-chan joins (~mikoto-ch@85-76-19-119-nat.elisa-mobile.fi) |
| 05:35:44 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 05:37:16 | → | bloomndoom joins (~bloomndoo@115.240.194.54) |
| 05:40:16 | → | zaquest joins (~notzaques@5.130.79.72) |
| 05:42:44 | × | bloomndoom quits (~bloomndoo@115.240.194.54) (Ping timeout: 260 seconds) |
| 05:43:10 | × | money quits (~polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:44:05 | → | polo joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 05:54:46 | → | chromoblob joins (~user@37.113.164.122) |
| 05:54:55 | × | polo quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:56:47 | × | ormaaj2 quits (~ormaaj@user/ormaaj) (Quit: Reconnecting) |
| 05:57:19 | → | ormaaj2 joins (~ormaaj@user/ormaaj) |
| 05:59:02 | ormaaj2 | is now known as ormaaj |
| 06:00:51 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 06:05:53 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 06:06:07 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 06:07:20 | × | phma quits (~phma@host-67-44-208-167.hnremote.net) (Read error: Connection reset by peer) |
| 06:08:20 | → | phma joins (phma@2001:5b0:2172:9238:1c11:6352:3843:cc13) |
| 06:09:31 | → | haask joins (~harry@user/haask) |
| 06:13:54 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 268 seconds) |
| 06:19:54 | → | vn36 joins (~vn36@123.63.203.210) |
| 06:23:13 | → | chromoblob joins (~user@37.113.164.122) |
| 06:24:37 | × | berberman_ quits (~berberman@user/berberman) (Ping timeout: 252 seconds) |
| 06:25:03 | → | polo joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 06:31:11 | × | polo quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Ping timeout: 276 seconds) |
| 06:31:13 | × | mikoto-chan quits (~mikoto-ch@85-76-19-119-nat.elisa-mobile.fi) (Ping timeout: 252 seconds) |
| 06:34:41 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 06:37:02 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 06:37:55 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds) |
| 06:38:24 | → | zaquest joins (~notzaques@5.130.79.72) |
| 06:42:45 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
| 06:43:12 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:44:36 | → | akegalj joins (~akegalj@93-138-111-227.adsl.net.t-com.hr) |
| 06:47:33 | × | bilegeek quits (~bilegeek@2600:1008:b023:888a:c234:abac:d5ca:c1d6) (Remote host closed the connection) |
| 06:47:59 | → | bilegeek joins (~bilegeek@2600:1008:b023:888a:c234:abac:d5ca:c1d6) |
| 06:51:17 | → | berberman joins (~berberman@user/berberman) |
| 06:54:29 | × | rekahsoft quits (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-156.dsl.bell.ca) (Ping timeout: 260 seconds) |
| 06:54:53 | → | nate4 joins (~nate@98.45.169.16) |
| 06:57:35 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 06:59:22 | → | cytokine_storm joins (~cytokine_@user/cytokine-storm/x-1083107) |
| 06:59:44 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 07:00:08 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds) |
| 07:00:53 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:02:37 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
| 07:04:06 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:05:16 | → | kenran joins (~user@user/kenran) |
| 07:09:59 | → | bilegeek_ joins (~bilegeek@168.sub-174-208-233.myvzw.com) |
| 07:10:06 | → | machinedgod joins (~machinedg@clnet-p10-126.ikbnet.co.at) |
| 07:10:33 | × | caryhartline quits (~caryhartl@2600:1700:2d0:8d30:9887:b652:159c:4200) (Quit: caryhartline) |
| 07:10:49 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 260 seconds) |
| 07:11:10 | × | cytokine_storm quits (~cytokine_@user/cytokine-storm/x-1083107) (Ping timeout: 260 seconds) |
| 07:11:24 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds) |
| 07:11:46 | → | cytokine_storm joins (~cytokine_@user/cytokine-storm/x-1083107) |
| 07:12:02 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 07:12:23 | × | bilegeek quits (~bilegeek@2600:1008:b023:888a:c234:abac:d5ca:c1d6) (Ping timeout: 255 seconds) |
| 07:13:06 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 07:14:31 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:18:24 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 07:23:54 | → | MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net) |
| 07:25:49 | → | berberman_ joins (~berberman@user/berberman) |
| 07:26:10 | × | berberman quits (~berberman@user/berberman) (Ping timeout: 252 seconds) |
| 07:26:36 | → | chele joins (~chele@user/chele) |
| 07:30:37 | × | berberman_ quits (~berberman@user/berberman) (Ping timeout: 252 seconds) |
| 07:31:33 | × | phma quits (phma@2001:5b0:2172:9238:1c11:6352:3843:cc13) (Read error: Connection reset by peer) |
| 07:32:26 | → | phma joins (~phma@host-67-44-208-37.hnremote.net) |
| 07:37:16 | → | zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 07:38:18 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 07:38:40 | → | berberman joins (~berberman@user/berberman) |
| 07:40:19 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:50d2:f70b:6128:ed96) |
| 07:42:58 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:44:25 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 07:44:30 | × | cytokine_storm quits (~cytokine_@user/cytokine-storm/x-1083107) (Ping timeout: 252 seconds) |
| 07:44:55 | → | cytokine_storm joins (~cytokine_@user/cytokine-storm/x-1083107) |
| 07:45:30 | → | jco joins (~jco@90-228-194-139-no542.tbcn.telia.com) |
| 07:45:34 | <tomsmeding> | I am most amused by there being an error but it also giving errno=0 |
| 07:45:35 | → | titibandit joins (~titibandi@xdsl-87-78-8-6.nc.de) |
| 07:45:39 | <jco> | :q |
| 07:45:40 | × | jco quits (~jco@90-228-194-139-no542.tbcn.telia.com) (Client Quit) |
| 07:46:16 | <tomsmeding> | reminds me of an error my friend once got from a Go application: "Error: http.client.CannotSendRequest: Request-sent" |
| 07:46:24 | × | MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 07:46:52 | → | mncheck joins (~mncheck@193.224.205.254) |
| 07:48:10 | → | MajorBiscuit joins (~MajorBisc@c-001-027-007.client.tudelft.eduvpn.nl) |
| 07:50:06 | × | vn36 quits (~vn36@123.63.203.210) (Ping timeout: 268 seconds) |
| 07:55:29 | × | derpadmin quits (~Anonymous@homebase.200013.net) (Quit: leaving) |
| 07:57:37 | → | CiaoSen joins (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 08:00:44 | × | jpds2 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 08:01:53 | → | jpds2 joins (~jpds@gateway/tor-sasl/jpds) |
| 08:03:56 | × | cytokine_storm quits (~cytokine_@user/cytokine-storm/x-1083107) (Quit: Quit) |
| 08:04:23 | → | vglfr joins (~vglfr@145.224.100.100) |
| 08:05:35 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 08:10:22 | bilegeek_ | is now known as bilegeek |
| 08:10:27 | → | cfricke joins (~cfricke@user/cfricke) |
| 08:13:17 | → | InstX1 joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) |
| 08:14:22 | → | chomwitt joins (~chomwitt@2a02:587:7a0a:c00:1ac0:4dff:fedb:a3f1) |
| 08:14:59 | × | Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 260 seconds) |
| 08:18:55 | → | `2jt joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) |
| 08:18:58 | × | `2jt quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Remote host closed the connection) |
| 08:19:06 | → | acidjnk joins (~acidjnk@p200300d6e7137a38458dfbf66917fb17.dip0.t-ipconnect.de) |
| 08:19:59 | → | vn36 joins (~vn36@123.63.203.210) |
| 08:23:23 | → | berberman_ joins (~berberman@user/berberman) |
| 08:24:31 | × | berberman quits (~berberman@user/berberman) (Ping timeout: 252 seconds) |
| 08:31:28 | → | Guest75 joins (~Guest75@178.141.177.81) |
| 08:31:54 | <Guest75> | Hi. How do I properly add category-extras to package.yaml? After I just added it regularly, stack says to me: |
| 08:31:56 | <Guest75> | category-extras needed, but the stack configuration has no specified version (latest matching version is 1.0.2) |
| 08:32:16 | <Guest75> | adding == 1.0.2 doesn't help either |
| 08:33:36 | → | vpan joins (~0@212.117.1.172) |
| 08:36:07 | → | Neuromancer joins (~Neuromanc@user/neuromancer) |
| 08:39:33 | → | nate4 joins (~nate@98.45.169.16) |
| 08:40:39 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 08:42:53 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 08:42:53 | × | ozkutuk quits (~ozkutuk@176.240.173.153) (Read error: Connection reset by peer) |
| 08:43:29 | × | ft quits (~ft@p508dbd59.dip0.t-ipconnect.de) (Quit: leaving) |
| 08:44:44 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 08:54:32 | × | vn36 quits (~vn36@123.63.203.210) (Ping timeout: 255 seconds) |
| 08:54:46 | × | berberman_ quits (~berberman@user/berberman) (Ping timeout: 252 seconds) |
| 08:55:50 | <tomsmeding> | Guest75: the "resolver set" used by 'stack' doesn't include every package on hackage |
| 08:56:05 | <Guest75> | aha... |
| 08:56:09 | <tomsmeding> | does stack not give you some line to add to the extra-deps section in your stack.yaml? |
| 08:58:38 | <Guest75> | yes. I were just scared by a list of things it asks to add after I do that: |
| 08:58:42 | → | berberman joins (~berberman@user/berberman) |
| 08:58:50 | <Guest75> | https://paste.tomsmeding.com/w1J3XUxs |
| 08:59:00 | <tomsmeding> | hah |
| 08:59:10 | <tomsmeding> | apparently that depends on a whole bunch of stuff that's not on Stackage |
| 08:59:54 | <tomsmeding> | what you're doing by adding those lines to extra-deps is telling stack "It's fine, you don't have a guaranteed-working version of those packages on Stackage, but just use these, it'll be fine" |
| 09:00:37 | <tomsmeding> | the version ranges still have to match -- each of those packages defines version ranges of its dependencies that it works with, and those will still be checked for consistency (I think) |
| 09:00:45 | <tomsmeding> | (if they aren't that's an issue) |
| 09:00:56 | <tomsmeding> | so it's relatively safe |
| 09:01:43 | <Guest75> | https://paste.tomsmeding.com/q6aslACB |
| 09:01:54 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 09:02:01 | <Guest75> | even more stuff. but after I added I've got this |
| 09:02:07 | × | alphabeta quits (~kilolympu@213.144.144.24) (Read error: Connection reset by peer) |
| 09:02:14 | <tomsmeding> | Guest75: look at your list, you added those packages twice |
| 09:02:25 | <Guest75> | yes I thought so :D |
| 09:02:36 | <tomsmeding> | try removing one of the two |
| 09:02:47 | <tomsmeding> | y'know, you can also use cabal directly and skip stack :p |
| 09:02:56 | <tomsmeding> | cabal just pulls from hackage directly |
| 09:03:23 | → | vn36 joins (~vn36@123.63.203.210) |
| 09:04:15 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:04:27 | <Guest75> | https://paste.tomsmeding.com/oW4n32QM |
| 09:04:35 | <Guest75> | yes there's still more work to do, perhaps |
| 09:04:57 | <Guest75> | I'll try later to read up these messages |
| 09:05:38 | <tomsmeding> | Guest75: meh, looks like stack gave you some conflicting versions |
| 09:05:45 | <Guest75> | yes |
| 09:05:54 | <tomsmeding> | what's your list of direct dependencies |
| 09:06:01 | <Guest75> | in the end of the day it seems that I should reconcile the conflict between deps myself |
| 09:06:08 | <tomsmeding> | and what's your stackage LTS resolver |
| 09:06:37 | <Guest75> | https://paste.tomsmeding.com/vO1RRHpO |
| 09:07:01 | <Guest75> | not sure on the resolver |
| 09:07:08 | <tomsmeding> | Guest75: that's in stack.yaml |
| 09:07:11 | <Guest75> | I actually did "stack new ..." recently |
| 09:07:19 | <Guest75> | https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/19/31.yaml |
| 09:07:33 | <Guest75> | maybe it has updated |
| 09:07:47 | <Guest75> | or the problem is that I use Stack from Ubuntu's standard packages |
| 09:08:02 | <Guest75> | (as opposed to installing it manually) |
| 09:08:11 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
| 09:08:39 | × | bilegeek quits (~bilegeek@168.sub-174-208-233.myvzw.com) (Quit: Leaving) |
| 09:08:47 | <tomsmeding> | nah that's not the problem |
| 09:09:09 | <tomsmeding> | problem is that stack doesn't properly solve versions for you, because it assumes you only need packages from Stackage, which is one set of compatible versions |
| 09:09:10 | <Guest75> | seems this one: https://github.com/commercialhaskell/stackage-snapshots/blob/master/lts/19/32.yaml |
| 09:09:13 | <Guest75> | is also available |
| 09:09:16 | → | berberman_ joins (~berberman@user/berberman) |
| 09:09:43 | <Guest75> | ok, how do we fix that? |
| 09:10:18 | × | berberman quits (~berberman@user/berberman) (Ping timeout: 252 seconds) |
| 09:11:03 | <tomsmeding> | heh okay it's not entirely stack's fault |
| 09:11:04 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 09:11:25 | <tomsmeding> | there is no set of compatible versions of your dependencies with ghc 8.10.7, 9.0.2 or 9.2.4 |
| 09:11:40 | <sm> | when you have a very gnarly list of deps to add, it's a sign you're using a resolver that's far from what the project was last built with, and you should probably use a different one |
| 09:11:47 | <Guest75> | but I only need category-extras |
| 09:11:59 | <tomsmeding> | category-extras depends on representable-functors which wants a very old 'transformers' |
| 09:12:08 | <Guest75> | sm: I suspect it's old, yes |
| 09:12:18 | <Guest75> | i.e. it needs old stuff |
| 09:12:32 | × | tessier quits (~treed@98.171.210.130) (Ping timeout: 255 seconds) |
| 09:13:03 | <Guest75> | might be an option to just copy pieces of code from category-extras to own files instead |
| 09:13:23 | <tomsmeding> | sm: does stack have allow-newer |
| 09:13:49 | <sm> | yes, in stack.yaml only (no cli option) |
| 09:13:59 | × | tcard quits (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) (Quit: Leaving) |
| 09:14:06 | <sm> | Guest75: you could show us what you're trying to build ? |
| 09:14:18 | <tomsmeding> | sm: https://paste.tomsmeding.com/vO1RRHpO |
| 09:14:29 | <tomsmeding> | that has no install plan under 8.8.4 or newer, didn't check older |
| 09:14:57 | <tomsmeding> | and if I use cabal --allow-newer=representable-functors:'*' it doesn't build |
| 09:15:14 | <Guest75> | I'm trying to find a way to play around with that "bifunctors": https://bartoszmilewski.com/2015/02/03/functoriality/bifunctor/ |
| 09:15:42 | <Guest75> | well that's clearly stuff from 2015 |
| 09:16:28 | <tomsmeding> | lol according to https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history you need to go back to ghc-7.8.4 to get transformers<4 |
| 09:16:44 | <tomsmeding> | that's quite old |
| 09:16:57 | <Guest75> | that means something |
| 09:17:08 | <Guest75> | i.e. that it isn't used much |
| 09:17:17 | <tomsmeding> | this particular library definitely isn't used much |
| 09:17:46 | <tomsmeding> | I think you can count the number of people still using ghc-7.* on one hand |
| 09:18:00 | <Guest75> | makes sense |
| 09:18:20 | <Guest75> | though I really want to look into the future more than past |
| 09:18:25 | → | kenran` joins (~user@user/kenran) |
| 09:18:33 | <Guest75> | (when it comes to code) |
| 09:18:42 | <tomsmeding> | Guest75: looks like category-extraas doesn't have any code of itself though, it just depends on other stuff |
| 09:18:53 | <tomsmeding> | you _may_ have some luck selecting only its dependencies that you actually need |
| 09:18:58 | <tomsmeding> | though they may all be old |
| 09:18:59 | <Guest75> | so better just to copy stuff |
| 09:19:05 | <Guest75> | yes I understand |
| 09:19:41 | <Guest75> | in the worst case scenario I'll end up maintaining it |
| 09:20:00 | → | tcard joins (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) |
| 09:20:04 | <Guest75> | (if I will agree with importance of Bifunctors though) |
| 09:20:12 | × | kenran quits (~user@user/kenran) (Ping timeout: 252 seconds) |
| 09:20:25 | <tomsmeding> | I mean, Data.Bifunctor is now in base |
| 09:20:30 | <Guest75> | ah |
| 09:20:33 | × | phma quits (~phma@host-67-44-208-37.hnremote.net) (Read error: Connection reset by peer) |
| 09:20:33 | <tomsmeding> | not sure how much you need of the other stuff |
| 09:20:38 | <Guest75> | oops :-) |
| 09:20:38 | <tomsmeding> | https://hackage.haskell.org/package/base-4.17.0.0/docs/Data-Bifunctor.html#t:Bifunctor |
| 09:20:56 | <tomsmeding> | they were considered useful :) |
| 09:21:15 | sm | used first just the other day |
| 09:21:29 | <bjourne> | what does !Foo in type declarations mean? |
| 09:21:31 | tomsmeding | uses first and second regularly, and bimap sometimes |
| 09:21:31 | <Guest75> | okay. thanks! cool |
| 09:21:41 | <tomsmeding> | but not sure I'm doing much with the full power of bifunctors |
| 09:21:56 | <tomsmeding> | bjourne: in a data type declaration, like `data Foo = MkFoo !Int`? |
| 09:22:02 | <tomsmeding> | that's a strict field |
| 09:22:08 | → | crazazy joins (~user@130.89.173.127) |
| 09:22:10 | <tomsmeding> | i.e. that field cannot be `undefined` |
| 09:22:42 | × | razetime quits (~quassel@117.193.0.120) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 09:22:48 | → | phma joins (~phma@2001:5b0:215d:f2c8:303a:6068:9aac:98fb) |
| 09:23:04 | <tomsmeding> | (but note that if you write e.g. `data Foo = MkFoo !(Maybe Int)`, then the Just/Nothing constructor will be evaluated, but not necessarily the contained Int) |
| 09:23:40 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 09:25:08 | → | ub joins (~Thunderbi@178.115.32.107.wireless.dyn.drei.com) |
| 09:25:51 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 09:26:26 | × | ubert quits (~Thunderbi@178.165.160.24.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
| 09:26:26 | ub | is now known as ubert |
| 09:34:44 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 09:35:58 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 09:36:10 | × | vn36 quits (~vn36@123.63.203.210) (Ping timeout: 268 seconds) |
| 09:39:48 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 09:42:43 | → | fserucas joins (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) |
| 09:42:55 | × | fserucas quits (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Client Quit) |
| 09:43:10 | → | fserucas|eod joins (~fserucas|@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) |
| 09:43:28 | → | cstml joins (~cstml@user/cstml) |
| 09:54:23 | × | Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Quit: leaving) |
| 09:59:30 | → | Maeda joins (~Maeda@91-161-10-149.subs.proxad.net) |
| 09:59:33 | → | Guest|19 joins (~Guest|19@39.42.139.200) |
| 10:00:15 | <Guest|19> | cabal : The term 'cabal' is not recognized as the name of a cmdlet, function, script file, or operable program. Check |
| 10:00:16 | <Guest|19> | the spelling of the name, or if a path was included, verify that the path is correct and try again. |
| 10:00:16 | <Guest|19> | At line:1 char:1 |
| 10:00:17 | <Guest|19> | + cabal repl --build-depends filepath |
| 10:00:17 | <Guest|19> | + ~~~~~ |
| 10:00:18 | <Guest|19> | + CategoryInfo : ObjectNotFound: (cabal:String) [], CommandNotFoundException |
| 10:00:18 | <Guest|19> | + FullyQualifiedErrorId : CommandNotFoundException |
| 10:00:23 | <Guest|19> | what should i do in this case |
| 10:02:47 | × | Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Client Quit) |
| 10:03:04 | → | teo joins (~teo@user/teo) |
| 10:03:22 | <[exa]> | Guest|19: that's from powershell? |
| 10:03:40 | → | Maeda joins (~Maeda@91-161-10-149.subs.proxad.net) |
| 10:04:36 | × | Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Remote host closed the connection) |
| 10:04:46 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) (Remote host closed the connection) |
| 10:05:29 | → | Maeda joins (~Maeda@91-161-10-149.subs.proxad.net) |
| 10:05:46 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds) |
| 10:06:36 | × | chronon quits (~chronon@user/chronon) (Remote host closed the connection) |
| 10:06:50 | → | razetime joins (~quassel@117.193.0.120) |
| 10:07:35 | <maerwald[m]> | Restart powershell |
| 10:08:05 | <Guest|19> | yes that is from powershell |
| 10:08:23 | <Guest|19> | i tried restarting it a couple of time but I did not work |
| 10:08:53 | <Guest|19> | I think it is due to environmrnt variable |
| 10:09:24 | <Guest|19> | as if Environment variable is not correct |
| 10:09:54 | <[exa]> | yes, I'm not really aware much about PS internals but this looks like PATH is missing focr cabal binaries |
| 10:10:19 | <[exa]> | (how did you install cabal?) |
| 10:12:13 | <Guest|19> | i copied the link for ghcup installation from website and it did all the rest |
| 10:12:25 | → | chromoblob joins (~user@37.113.164.122) |
| 10:14:19 | <maerwald[m]> | [exa]: Guest|<int> is the nickname you get when you click on the help link on the ghcup website ;) |
| 10:14:32 | → | razetime_ joins (~quassel@117.193.0.120) |
| 10:14:34 | × | razetime quits (~quassel@117.193.0.120) (Ping timeout: 260 seconds) |
| 10:14:43 | <maerwald[m]> | Guest|19: can you check your PATH? |
| 10:14:48 | <maerwald[m]> | Via GUI |
| 10:15:07 | <Guest|19> | i think it was not installed earlier... now I have run the command ghcup install cabal |
| 10:15:27 | <Guest|19> | in path in shows C: cabal |
| 10:15:34 | <Guest|19> | for cabal_dir |
| 10:15:38 | <maerwald[m]> | Oh, that's odd |
| 10:15:53 | <maerwald[m]> | What? |
| 10:16:21 | <Guest|19> | i think that error is somehow resolved :b |
| 10:20:25 | × | gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
| 10:24:25 | × | zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!) |
| 10:24:59 | <bjourne> | what could be the reason for the "show" function to enter an infinite loop? |
| 10:26:07 | → | gentauro joins (~gentauro@user/gentauro) |
| 10:26:15 | <merijn> | bjourne: You defined a recursive instance by accident :p |
| 10:26:23 | <merijn> | bjourne: How do you know it's an infinite loop? |
| 10:27:25 | <bjourne> | i dont |
| 10:28:14 | <tomsmeding> | bjourne: are you sure it's `show` that's looping, and not the computation that produces the value you're trying to show? |
| 10:28:21 | <tomsmeding> | % let x = x + 1 :: Int |
| 10:28:22 | <yahb2> | <no output> |
| 10:28:24 | <tomsmeding> | % show x |
| 10:28:26 | <yahb2> | <timeout> |
| 10:29:14 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 10:29:27 | <tomsmeding> | usually you can distinguish between those cases with seq |
| 10:29:31 | <tomsmeding> | % let x = x + 1 :: Int |
| 10:29:31 | <yahb2> | <no output> |
| 10:29:35 | <tomsmeding> | % let y = 42 :: Int |
| 10:29:35 | <yahb2> | <no output> |
| 10:29:43 | <tomsmeding> | % y `seq` () |
| 10:29:43 | <yahb2> | () |
| 10:29:51 | <tomsmeding> | % x `seq` () |
| 10:29:53 | <yahb2> | <timeout> |
| 10:30:12 | <tomsmeding> | here you detect that x never produces any result without getting `show` involved |
| 10:32:11 | <tomsmeding> | maerwald[m]: I like that, sneaky hiding of information in an inconspicuous place |
| 10:32:39 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds) |
| 10:33:27 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 10:34:02 | <bjourne> | tomsmeding: yes |
| 10:34:31 | <tomsmeding> | bjourne: what type are you showing |
| 10:36:12 | <bjourne> | Node Range |
| 10:36:59 | <tomsmeding> | it's a custom type? Well, `show` is just an instance method, so whoever wrote that instance wrote the `show` function for it, and you could look there |
| 10:37:16 | <tomsmeding> | but I strongly suspect it's not `show` that's looping but the computation before it (remember, haskell is lazy) |
| 10:38:31 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 10:39:12 | <bjourne> | then how do i force it to fully evaluate the expression? |
| 10:40:16 | × | Guest|19 quits (~Guest|19@39.42.139.200) (Quit: Connection closed) |
| 10:43:15 | → | chromoblob joins (~user@37.113.164.122) |
| 10:43:44 | × | jmd_ quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds) |
| 10:47:31 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:50d2:f70b:6128:ed96) (Ping timeout: 252 seconds) |
| 10:47:34 | <tomsmeding> | bjourne: "thing `seq` ()" completes? |
| 10:48:04 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:c3bb:6c84:6165:ec98) |
| 10:48:38 | <tomsmeding> | you can import Control.DeepSeq (from the 'deepseq' package), derive NFData instances for the types in question, and then use 'force' |
| 10:48:38 | <bjourne> | yes |
| 10:48:54 | <tomsmeding> | that's full evaluation instead of only the top-most layer (called WHNF) |
| 10:49:14 | <tomsmeding> | bjourne: perhaps if you post your show instance and the type we can already see if there's something wrong |
| 10:49:36 | <bjourne> | it's related to the alex framework. this works: my_show (GVarDef (Range _ _) _ _ _) = "bah" |
| 10:49:44 | <bjourne> | this doesn't: my_show (GVarDef (Range (AlexPn a b c) _) _ _ _) = "bah" |
| 10:49:49 | × | akegalj quits (~akegalj@93-138-111-227.adsl.net.t-com.hr) (Quit: leaving) |
| 10:50:30 | <tomsmeding> | what you can also do is pick out a part of your value using `case`, and then evaluate that |
| 10:50:53 | <tomsmeding> | case value of GVarDef (Range x) _ _ _ -> x `seq` () |
| 10:51:10 | <tomsmeding> | case value of GVarDef (Range (AlexPn x _ _) _ _ _ -> x `seq` () |
| 10:52:18 | <tomsmeding> | also try stuff like |
| 10:52:24 | <tomsmeding> | case value of GVarDef (Range (AlexPn _ _ _) _ _ _ -> () |
| 10:52:34 | <tomsmeding> | to check whether it's even that constructor (if the data type has multiple constructors) |
| 10:53:04 | <tomsmeding> | (though I guess that wil be caught if you run both of the preceding ones, so not necessary here) |
| 10:56:08 | → | __monty__ joins (~toonn@user/toonn) |
| 10:56:47 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 246 seconds) |
| 10:58:52 | <bjourne> | lazy evaluation is the stupidest idea ever |
| 10:58:55 | → | polo joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 10:59:27 | <bjourne> | it's something about the AlexPn type, if i don't touch it everything is fine, but if i "open" it, it loops |
| 10:59:43 | <tomsmeding> | sounds like alex is doing something weird |
| 11:00:35 | tomsmeding | knows nothing about alex |
| 11:01:13 | → | chromoblob joins (~user@37.113.164.122) |
| 11:01:25 | → | vn36 joins (~vn36@123.63.203.210) |
| 11:02:37 | <bjourne> | i'm more or less structuring my lexer/parser like this: https://serokell.io/blog/lexing-with-alex |
| 11:04:04 | × | vglfr quits (~vglfr@145.224.100.100) (Read error: Connection reset by peer) |
| 11:05:13 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) |
| 11:05:21 | → | xff0x joins (~xff0x@2405:6580:b080:900:d135:3c26:3e1:534d) |
| 11:05:30 | → | vglfr joins (~vglfr@145.224.100.100) |
| 11:06:27 | × | shinjipf quits (~shinjipf@2a01:4f8:1c1c:c1be::1) (Quit: Shinji leaves) |
| 11:06:41 | → | shinjipf joins (~shinjipf@2a01:4f8:1c1c:c1be::1) |
| 11:06:47 | × | polo quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Changing host) |
| 11:06:47 | → | polo joins (~polo@user/polo) |
| 11:08:15 | <[exa]> | bjourne: do you have the code somewhere for checking? |
| 11:08:37 | <[exa]> | bjourne: in most cases this is caused by a sneaky let recursion that you miss somewhere :] |
| 11:09:36 | → | crazazy[m] joins (~crazazyut@2001:470:69fc:105::2:ba2a) |
| 11:10:25 | → | coot joins (~coot@213.134.171.3) |
| 11:10:53 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) (Ping timeout: 255 seconds) |
| 11:13:18 | × | polo quits (~polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:21:45 | × | phma quits (~phma@2001:5b0:215d:f2c8:303a:6068:9aac:98fb) (Read error: Connection reset by peer) |
| 11:22:47 | → | phma joins (~phma@host-67-44-208-197.hnremote.net) |
| 11:23:49 | × | zer0bitz quits (~zer0bitz@196.244.192.61) (Read error: Connection reset by peer) |
| 11:25:33 | → | beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 11:25:47 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 11:27:04 | × | potash quits (~foghorn@user/foghorn) (Ping timeout: 252 seconds) |
| 11:27:15 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 11:27:47 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 268 seconds) |
| 11:28:14 | → | Guest|19 joins (~Guest|19@39.42.139.200) |
| 11:28:45 | <Guest|19> | https://github.com/TheTeaCat/COM2108-Assignment-3 |
| 11:28:45 | <Guest|19> | i am trying to run this project... but I have no idea how can I do this Guide me please |
| 11:30:02 | <__monty__> | Guest|19: How far have you gotten trying to follow the Setup instructions? |
| 11:30:46 | → | olivermead joins (~olivermea@cpc72329-sotn15-2-0-cust205.15-1.cable.virginm.net) |
| 11:30:54 | ← | crazazy parts (~user@130.89.173.127) (ERC (IRC client for Emacs 28.0.50)) |
| 11:31:08 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 11:31:19 | <Guest|19> | when i write./Extension +RTS -N1 the command prompt gives me error it do not recognize the command |
| 11:31:58 | ← | Lycurgus parts (~juan@user/Lycurgus) () |
| 11:32:08 | → | chromoblob joins (~user@37.113.164.122) |
| 11:32:20 | → | potash joins (~foghorn@user/foghorn) |
| 11:32:56 | <__monty__> | Is there a file named "Extension" in your PWD? |
| 11:34:51 | → | Heyting joins (~Heyting@193.198.16.217) |
| 11:36:15 | <ski> | bjourne : did you define `show' for your (?) type ? |
| 11:36:39 | <Guest|19> | yes Extension.hs is the file |
| 11:40:10 | → | polo joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 11:42:25 | → | zer0bitz joins (~zer0bitz@196.244.192.59) |
| 11:46:30 | × | coot quits (~coot@213.134.171.3) (Quit: coot) |
| 11:46:37 | <__monty__> | Guest|19: No, not Extension.hs. Running the `ghc` command should have produced a file named "Extension". |
| 11:46:59 | <Guest|19> | yes it did |
| 11:49:22 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 268 seconds) |
| 11:49:52 | <__monty__> | Guest|19: Ok, then the problem may be the file lacking execute permissions. So try running `chmod u+x Extension` and then the `./Extension` command again. |
| 11:52:04 | <Guest|19> | ook |
| 11:55:00 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 11:56:19 | × | polo quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:58:06 | × | Heyting quits (~Heyting@193.198.16.217) (Remote host closed the connection) |
| 11:58:52 | → | chromoblob joins (~user@37.113.164.122) |
| 11:59:52 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 12:05:33 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 12:12:14 | → | ph88 joins (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) |
| 12:12:48 | × | vn36 quits (~vn36@123.63.203.210) (Ping timeout: 268 seconds) |
| 12:13:40 | × | zer0bitz quits (~zer0bitz@196.244.192.59) (Quit: No Ping reply in 180 seconds.) |
| 12:15:05 | → | zer0bitz joins (~zer0bitz@196.244.192.59) |
| 12:16:09 | × | Xeroine quits (~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
| 12:18:13 | × | Guest|19 quits (~Guest|19@39.42.139.200) (Quit: Connection closed) |
| 12:20:00 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 12:21:29 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::4b68) |
| 12:22:09 | → | nate4 joins (~nate@98.45.169.16) |
| 12:23:11 | → | shailangsa joins (~shailangs@host109-159-108-137.range109-159.btcentralplus.com) |
| 12:24:09 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::4b68) (Client Quit) |
| 12:25:08 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::4b68) |
| 12:26:54 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::4b68) (Client Quit) |
| 12:27:20 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 12:27:48 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 12:40:10 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::4b68) |
| 12:40:37 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5) |
| 12:41:09 | <bjourne> | ski: yes |
| 12:42:29 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 246 seconds) |
| 12:43:04 | → | vn36 joins (~vn36@123.63.203.210) |
| 12:50:32 | <ski> | bjourne : ok. you should note that usually people should define `showsPrec' rather than `show' (because unless you only print a syntactically atomic result, you really should be making use of the precedence to optionally bracket the output) |
| 12:52:20 | <bjourne> | ski: i didn't define it directly, but the type is deriving (Show) |
| 12:52:21 | <ski> | that is, if they're even manually making a `Show' instance at all. imho, if you're after some pretty printing, or syntactic sugar, `Show' is not the right place for that. it ought to generate a valid Haskell source representation of the value, as a `String', that could be copied back into a source file, or the interactor, to produce an equivalent value. (obviously should be readable by a `Read' instance back |
| 12:52:27 | <ski> | into an equivalent value, as well) |
| 12:52:30 | <ski> | well, ok |
| 12:52:40 | <ski> | in that case, you are *not* defining `show' yourself |
| 12:53:00 | × | phma quits (~phma@host-67-44-208-197.hnremote.net) (Read error: Connection reset by peer) |
| 12:53:26 | → | phma joins (phma@2001:5b0:210d:6148:bdc4:3c24:81d2:404a) |
| 12:53:31 | <ski> | (no worry, it may not be so easy to tell apart the difference at first, as a beginner) |
| 12:54:01 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds) |
| 12:55:59 | <ski> | the usual cases where i makes sense to make your own `Show' instance are (a) when you're making an abstract data type, so you don't want to expose implementation/representation details, but rather present the value in terms of publicly exported operations to construct it (e.g. `Array' and `Map' does this); and (b) occasionally, you might want to have a type with infix constructors displayed, with a minimum |
| 12:56:05 | <ski> | amount of brackets. for some reason, the `deriving Show' instance will not keep track of associativity, only precedence, to reduce brackets |
| 12:56:08 | <ski> | s/i makes/it makes/ |
| 12:56:09 | <bjourne> | yes i am defining show, that is what deriving (Show) does |
| 12:56:31 | <ski> | `deriving Show' makes it so that the *implementation* defines `showsPrec' and `show' *for* you |
| 12:57:11 | <bjourne> | no, *I'm* defining it |
| 12:57:13 | <ski> | if you're not writing `show ... = ...' yourself, you're not defining `show'. you're instructing the implementation to do that for you (along a standard pattern of doing that) |
| 12:57:28 | <ski> | well, in that case, you are *not* doing `deriving (Show)' |
| 12:57:33 | <ski> | you can't do both at the same time |
| 12:57:52 | <ski> | it will complain about duplicate instances |
| 12:58:05 | <ski> | you can't say both |
| 12:58:09 | <ski> | data Foo = ... |
| 12:58:13 | <ski> | deriving Show |
| 12:58:15 | <ski> | *and* |
| 12:58:18 | <ski> | instance Show Foo |
| 12:58:19 | <ski> | where |
| 12:58:27 | <ski> | showsPrec ... = ... |
| 12:58:54 | <ski> | only the latter would count as defining `show' (or `showsPrec', in the concrete example i did) |
| 12:59:32 | <ski> | do you see the difference i'm pointing out ? |
| 12:59:34 | <bjourne> | "If the deriving form is present, an instance declaration is **automatically generated**" |
| 12:59:38 | <ski> | yes |
| 12:59:39 | <bjourne> | http://www2.informatik.uni-freiburg.de/~thiemann/haskell/haskell98-report-html/derived.html |
| 12:59:43 | <ski> | exactly |
| 12:59:52 | <bjourne> | so, yes, i'm *defining* it |
| 13:00:07 | <ski> | so, in that case, you're not writing `show' (or `showPrec'). you're telling the implementation to automatically generating it for you |
| 13:00:08 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 13:00:42 | <ski> | if you're not spelling out the defining equation(s) for `show' (or `showsPrec') yourself, *you* are not defining it. you're letting the system define it, for you |
| 13:00:52 | <ski> | (and usually, this is what you want to do) |
| 13:02:20 | <ski> | (perhaps more succinctly : if you're using `deriving Show', then you're *deriving* it, not *defining* it) |
| 13:02:22 | <bjourne> | yes *I* am defining it, that i'm not writing the characters "show blah = bla" anywhere is immaterial |
| 13:02:52 | <ski> | the effect is the same : you end up with having a `Show' instance for the type |
| 13:03:26 | <bjourne> | no, i'm *defining* the value of the expression "show MyType" exactly if i had used the instance ... syntax |
| 13:03:38 | <ski> | the means are different : either you define it yourself (and then you could tweak the implementation to do things differently). or you derive it (telling the system to define it for you) (and then you can't tweak the implementation) |
| 13:03:45 | <ski> | the difference here (sometimes) matters |
| 13:04:55 | <ski> | i agree with your last statement. if you had used `instance Show ...', then you'd be defining yourself how `show' behaved |
| 13:05:24 | <bjourne> | i'm doing exactly the same thing by writing deriving Show |
| 13:05:32 | <bjourne> | it's just syntatic sugar |
| 13:05:55 | razetime_ | is now known as razetime |
| 13:06:10 | <ski> | "that i'm not writing the characters \"show blah = bla\" anywhere is immaterial" -- the difference is that with `deriving Show', you get a pre-canned implementation (which is fine, if that one is what you want, which is the case, most of the time). while if you're not doing that, you are *able* to do things differently. this is an important distinction |
| 13:06:41 | <ski> | if you were writing `deriving Show', then you could *not* have it report the value in terms of abstract data type operations |
| 13:06:54 | <ski> | > listArray (0,3) [2,3,5,7] |
| 13:06:55 | <lambdabot> | array (0,3) [(0,2),(1,3),(2,5),(3,7)] |
| 13:07:13 | <ski> | this instance of `Show' for `Array' could *not* have been made using `deriving Show' |
| 13:08:02 | → | zer0bitz_ joins (~zer0bitz@196.244.192.59) |
| 13:08:07 | <ski> | > foldr S.insert S.empty [3,7,5,2] |
| 13:08:08 | <lambdabot> | fromList [2,3,5,7] |
| 13:08:17 | <ski> | nor this example of using `Set' |
| 13:08:43 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) |
| 13:09:01 | <bjourne> | immaterial and a tangent. "deriving Show" *defines* show for the type the declaration is attached to |
| 13:09:10 | <dminuoso> | For Set at least there could be a deriving generated Show, but for Array that is actually impossible. |
| 13:09:32 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 268 seconds) |
| 13:09:45 | <bjourne> | the one doing the *defining* (the verb) is the one writing the code, i.e me |
| 13:09:52 | <ski> | *if* you just want the standard way of showing a value, *then* it's the same to use `deriving Show', and to explicitly spell out the `show' (or more likely `showsPrec') instance .. it's just more work (and more opportunity to do a mistake) to do the latter. so it's sensible to do the former in this case |
| 13:10:01 | <dminuoso> | Or well, I guess you *could* define it in terms of bang literal strings. Mmm |
| 13:10:08 | × | zer0bitz quits (~zer0bitz@196.244.192.59) (Ping timeout: 246 seconds) |
| 13:10:09 | <troydm> | are IORef same as pointers, if I'll pass same IORef to two different functions and change it's value in one, will the second reference the changed value? |
| 13:10:23 | <dminuoso> | troydm: Yes, and correct. |
| 13:10:25 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 13:10:28 | <troydm> | dminuoso: thx |
| 13:10:34 | <dminuoso> | An IORef really is a pointer under the hood too. |
| 13:10:52 | <ski> | "\"deriving Show\" *defines* show for the type the declaration is attached to" -- i agree. the *implementation* defines it, *for* you. *you* do not define it, in this case |
| 13:11:07 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 13:11:25 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 13:11:47 | <bjourne> | ski: no, *I* *define* *show* by picking the *default* *implementation* |
| 13:12:05 | <merijn> | troydm: Slight disagree with dminuoso that IORef are pointers |
| 13:12:07 | <bjourne> | the answer to your question "did you define `show' for your (?) type ?" was yes, not no |
| 13:12:08 | <ski> | troydm : and the same with `IOArray',`STRef',`STArray',`MVar',`TVar' |
| 13:12:15 | <merijn> | troydm: For one, IORef is atomic update |
| 13:12:51 | <troydm> | merijn: ohh, so I don't need to worry about sync issues with multiple threads? |
| 13:12:52 | <merijn> | So they're race free, unlike pointers |
| 13:13:04 | <troydm> | k, cool |
| 13:13:12 | <dminuoso> | merijn: An IORef boils down to a MutVar# |
| 13:13:17 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Ping timeout: 255 seconds) |
| 13:13:47 | <merijn> | dminuoso: This is gonna lead down a semantic rabit hole of "what is a pointer", but I remain with my observation that IORef is *not* like a C pointer |
| 13:13:49 | <dminuoso> | Where do you get the idea that an IORef is atomic, merijn? |
| 13:14:25 | <dminuoso> | Pretty sure that modifying them is not atomic, unless you explicitly use atomicModifyIORef |
| 13:14:38 | <merijn> | dminuoso: reading/writing is atomic |
| 13:14:52 | <ski> | bjourne : i think the source of the issue is that we're using slightly different meanings attached to what it means to define something. i'm pointing out that the distinction i'm making (sometimes) matters. iow, it matters whether *you* are able to tweak the definition or not. you can't tweak something you haven't spelled out. i fully agree that deriving causes a definition to be provided. i'm taking issue |
| 13:14:58 | <ski> | with claiming you are doing the definition, since that would, in my eyes, imply that you're able to tweak it, which you can't. you're just able to say yes or no to the generated one, not tweak it |
| 13:15:02 | <merijn> | read, compute, write, is (obviously) not atomic, unless you use atomicModifyIORef |
| 13:15:40 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 13:15:46 | <merijn> | Although once you start introducing concurrency the issue of consistency/memory model becomes considerably more complex |
| 13:15:46 | <dminuoso> | 14:12:15 merijn | troydm: For one, IORef is atomic update |
| 13:15:51 | <dminuoso> | This is grossly misleading then |
| 13:15:59 | <merijn> | dminuoso: "update" as in "writing to one" |
| 13:15:59 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds) |
| 13:16:01 | × | acidjnk quits (~acidjnk@p200300d6e7137a38458dfbf66917fb17.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 13:16:07 | <ski> | bjourne : seeing as we're using slightly different meanings attached to the word, i don't think it makes sense to argue about what it "really means". i'm coming from this from a practical standpoint, of what's relevant concerns to the programmer. sometimes it matters to be able to provide a custom `Show' instance. sometimes it doesn't. i hope at least you're able to see this point |
| 13:16:43 | <bjourne> | ski: nah, you are just wrong |
| 13:17:01 | <dminuoso> | Well, I think explaining them like c-pointers works well enough, at best you get additional guarantees. |
| 13:17:01 | <bjourne> | but that's ok |
| 13:17:14 | <ski> | we can agree to disagree, sure |
| 13:17:16 | <dminuoso> | But you're not going to make bad inference from that |
| 13:18:25 | <ski> | troydm : also, you can't atomically update multiple `IORef's |
| 13:19:27 | × | vn36 quits (~vn36@123.63.203.210) (Quit: leaving) |
| 13:19:43 | × | Guest75 quits (~Guest75@178.141.177.81) (Ping timeout: 260 seconds) |
| 13:19:49 | × | bjourne quits (~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5) (Quit: Konversation terminated!) |
| 13:21:14 | <troydm> | ski: how so? |
| 13:21:52 | <ski> | another thread could read from or write to one of them in the meantime you've updated (or read) just one of them, but not the other |
| 13:22:53 | <ski> | if you find yourself needing this, you should probably look into `TVar' (using `STM') (or perhaps try to look for a different way to go about solving your problem, if available) |
| 13:23:17 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 13:24:07 | → | tessier joins (~treed@98.171.210.130) |
| 13:25:39 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 13:27:11 | <dminuoso> | That is, the transactional scope of writeIORef or atomicModifyIORef is only a singular IORef. Sequencing two of them no longer is atomic. |
| 13:27:37 | <dminuoso> | It is curious that we even mention this, in many other programming languages this goes without saying. |
| 13:28:21 | <dminuoso> | But most of these languages do not have built-in STM, some have it it as external libraries. |
| 13:29:20 | <dminuoso> | Heck, even the atomicity is a special feature - in some languages you either get no atomicity, or its just imbued by fact of holding some kind of global interpreter lock. |
| 13:32:42 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:34:27 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:41:18 | ← | fr33domlover[m] parts (~fr33domlo@2001:470:69fc:105::1:3bb6) () |
| 13:41:36 | × | listeners quits (~sdenynine@user/mixfix41) (Ping timeout: 268 seconds) |
| 13:43:46 | × | mncheck quits (~mncheck@193.224.205.254) (Remote host closed the connection) |
| 13:47:22 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 13:48:46 | <dminuoso> | ski: By the way, after our last discussions about continuations, it occured to me that when we think of a continuation as a computation with a hole `\x -> ... x ...` - there was a striking resembles with lenses |
| 13:49:34 | <dminuoso> | Especially in the van Laarhoven encoding |
| 13:50:23 | <ski> | oh, elaborate ? |
| 13:50:53 | <ski> | that would correspond to the "setter" part, no ? |
| 13:51:12 | <ski> | the `b -> a' part of `a -> (b,b -> a)' |
| 13:51:32 | <merijn> | pedantic sidenote that it should be Van Laarhoven :p |
| 13:52:05 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 13:52:06 | <dminuoso> | Ah really? Good to know. |
| 13:52:39 | <tomsmeding> | Sander van Laarhoven, but Van Laarhoven |
| 13:53:01 | <tomsmeding> | contacts apps get this wrong always |
| 13:53:11 | <ski> | oh, so capitalize the initial letter, when the surname occurs on its own |
| 13:53:11 | × | kenran` quits (~user@user/kenran) (Remote host closed the connection) |
| 13:53:22 | <tomsmeding> | "surname field" -- okay so should I enter the capital or not? Either will go wrong 50% of the time |
| 13:53:31 | <tomsmeding> | yeah |
| 13:53:54 | <merijn> | ski: In Dutch it's basically "first letter of name is capitalised trumps any other rule" |
| 13:54:05 | ski | nods |
| 13:54:20 | <ski> | (i imagine Flemish would be similar) |
| 13:55:22 | <merijn> | ski: Flemish is different in that they *always* capitalise the "tussenvoegsel" |
| 13:55:30 | → | polo_ joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 13:55:43 | <merijn> | So in Flemish it'd also be Sander Van Laarhoven |
| 13:55:45 | <ski> | being the "v" in "van" (in this case) ? |
| 13:55:47 | <ski> | okay |
| 13:55:59 | <ski> | curious |
| 13:56:01 | <Unhammer> | How would I create a Storable instance for a c++ std::pair<float,std::string> ? Is it as if it were a struct? |
| 13:56:24 | <merijn> | Unhammer: You cry |
| 13:56:28 | <merijn> | Unhammer: And take up drinking |
| 13:56:30 | <geekosaur> | I suspect you need to export "C" it as a struct |
| 13:56:32 | <tomsmeding> | then you first have to decide how in the world to get something out of that std::string |
| 13:56:38 | <merijn> | Unhammer: I highly recommend Laphraoig 10 |
| 13:56:43 | <geekosaur> | you get zero promises about how C++ objects are stored |
| 13:56:53 | <merijn> | geekosaur: Yeah, pretty much |
| 13:57:02 | <merijn> | Unhammer: So the short answer is "you can't" |
| 13:57:23 | <Unhammer> | :(( |
| 13:57:33 | <merijn> | The longer answer is "if you're sufficiently stubborn you can probably pull it off, if you're willing to sacrifice your sanity, happiness, and mental well being" |
| 13:57:41 | <geekosaur> | and portability |
| 13:57:48 | <merijn> | oh, and also portability and any guarantees of it actually working |
| 13:58:10 | <Unhammer> | first half hour of making bindings to c++ "this is really easy I'm almost done now I just need to read more than the first element of that vector of pairs" … three hours later |
| 13:58:16 | <Unhammer> | :( |
| 13:58:25 | <tomsmeding> | thing is, with std::string you also have the issue that implementations sometimes do this "small string optimisation" where strings of length <8 (<=8? dunno) are stored in the field where the pointer would normally live |
| 13:58:29 | <Unhammer> | sooo … I should make it into a struct on the C side? |
| 13:58:32 | <merijn> | Unhammer: Write a C++ wrapper that's 'export "C"' and converts |
| 13:58:40 | ski | . o O ( "Scsh Reference Manual - Acknowledgements" by Olin Shivers in 1994-09-04 at <https://scsh.net/docu/html/man.html> ) |
| 13:58:57 | <tomsmeding> | and furthermore, converts away that std::string and makes it a pair of a size_t and a char* |
| 13:59:04 | <merijn> | Unhammer: The problem is that different C++ standard libraries don't have to use the same implementation for std::string nor std::pair |
| 13:59:08 | <dminuoso> | ski: So consider an example of: |
| 13:59:20 | <dminuoso> | % data V3 x y z = V3 x y z |
| 13:59:20 | <yahb2> | <no output> |
| 13:59:30 | <dminuoso> | % f1 :: Lens' (V3 x y z) x; f1 f (V3 x y z) = f x <$> (\x' -> V3 x' y z) |
| 13:59:30 | <yahb2> | <interactive>:18:7: error: ; Not in scope: type constructor or class ‘Lens'’ |
| 13:59:43 | <dminuoso> | % :set RankNTypes |
| 13:59:43 | <yahb2> | Some flags have not been recognized: RankNTypes |
| 13:59:46 | <dminuoso> | % :set -XRankNTypes |
| 13:59:47 | <yahb2> | <no output> |
| 13:59:55 | <dminuoso> | % type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t |
| 13:59:55 | <yahb2> | <no output> |
| 13:59:57 | <dminuoso> | % f1 :: Lens' (V3 x y z) x; f1 f (V3 x y z) = f x <$> (\x' -> V3 x' y z) |
| 13:59:57 | <yahb2> | <interactive>:26:7: error: ; Not in scope: type constructor or class ‘Lens'’ ; Perhaps you meant ‘Lens’ (line 24) |
| 14:00:01 | <dminuoso> | Oh hold on |
| 14:00:06 | <ski> | Unhammer : i guess maybe you could provide `export "C"' operations to access the innards .. |
| 14:00:50 | <dminuoso> | % f1 :: Lens (V3 x y z) (V3 x' y z) x x'; f1 f (V3 x y z) = (\x' -> V3 x' y z) <$> f x |
| 14:00:50 | <yahb2> | <no output> |
| 14:00:59 | <ski> | ok |
| 14:00:59 | <merijn> | Unhammer: You could write 'export "C" void *pack_pair(float f, char *s);' that returns a pointer to the pair |
| 14:01:33 | <tomsmeding> | merijn: watch out, std::string can contain null bytes |
| 14:01:35 | <dminuoso> | ski: So there is this frequent remark that a lens splits data into "the focus" and the "whole with a hole". This representation shows why that is |
| 14:01:52 | <ski> | tomsmeding : it stores size separately ? |
| 14:01:56 | <tomsmeding> | yes |
| 14:02:28 | <dminuoso> | ski: And I keep thinking about how this "whole with a hole" as just a computational hole, much like a coroutine. |
| 14:03:08 | <dminuoso> | Or a continuation, if you want |
| 14:03:23 | <ski> | dminuoso : mhm .. i suppose that makes some sense. and the composing lenses, amounts (apart from the access) to nesting such contexts inside each other |
| 14:03:28 | <dminuoso> | Yup |
| 14:03:47 | <ski> | (not sure where/how coroutines are related / enter) |
| 14:03:49 | <Unhammer> | it's a short enough array I'll just convert … |
| 14:04:38 | <tomsmeding> | Unhammer: if you're sure that the std::string lives long enough, you don't need to copy the array, you just need to give Haskell a pointer to the contents (i.e. .data()) |
| 14:04:45 | <tomsmeding> | but be very sure that the std::string lives long enough |
| 14:05:12 | <dminuoso> | ski: well it would be a kind of update coroutine halted on where it would insert the new data. |
| 14:05:27 | <ski> | (perhaps you could also have a version which accepts a callback, which you pass the pair pointer to) |
| 14:05:36 | <merijn> | Unhammer: One of the problems with C++ is that there's no standard ABI for interacting with C++ types/classes/etc. so FFI stuff to it is a nightmare |
| 14:06:13 | <dminuoso> | *disclaimer - if lack of an ABI is a problem, then GHC Haskell has the same problem. |
| 14:06:31 | <merijn> | dminuoso: Well, yes |
| 14:06:42 | <merijn> | dminuoso: But we only have one GHC and no serious competition |
| 14:07:04 | <merijn> | Whereas there's 4 possible C++ combo's you can encounter and you're hosed if you mix them |
| 14:07:05 | <dminuoso> | Sure but its not stable either, which makes FFIing into Haskell a pain in the butt |
| 14:07:38 | <dminuoso> | So even having just one compiler doesnt really make things easier |
| 14:08:13 | <merijn> | to be fair, C++ isn't stable either, so strictly worse ;) |
| 14:08:22 | × | polo_ quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 14:08:23 | <dminuoso> | heh :) |
| 14:08:58 | → | polo_ joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 14:09:53 | <merijn> | ski: Apparently English wikipedia gave up trying to find a translation and is just using the Dutch word: https://en.wikipedia.org/wiki/Tussenvoegsel ;) |
| 14:10:27 | <tomsmeding> | lol |
| 14:10:41 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 14:11:11 | <merijn> | tbh, I tried to translate on the fly once, but it's...hard xD |
| 14:11:23 | <merijn> | "inbetweensel"? >.> |
| 14:11:58 | <geekosaur> | "inbetweener"? |
| 14:12:22 | <merijn> | geekosaur: No, because it's kinda diminutive |
| 14:12:29 | <merijn> | Which English is sorely lacking |
| 14:12:47 | × | CiaoSen quits (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 14:13:06 | <tomsmeding> | inbetweeny |
| 14:13:41 | × | polo_ quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Client Quit) |
| 14:13:58 | <geekosaur> | inbeteeny? |
| 14:13:59 | → | acidjnk joins (~acidjnk@p200300d6e7137a61d962e1cf9864f38d.dip0.t-ipconnect.de) |
| 14:14:22 | <ski> | dminuoso : hm. i think one way to represent a coroutine might be something like `newtype C o = MkC (Foo -> (Bar -> C o) -> o)', where `Foo' is the partial input the coroutine accepts, and `Bar' is what it produces after yielding again, and `o' is the final answer type. `C o' is the state type of the coroutine, while suspended |
| 14:14:55 | <merijn> | tbh, tussenvoegsel is one of those Dutch words that just makes me more and more pleased with the language, the more I ponder it |
| 14:15:20 | <tomsmeding> | juxtajoiner |
| 14:15:31 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 14:16:02 | <merijn> | tussen already is (in)between on its own, and voegsel is (literally) grout, but that's also a woefully inadequate translation :p |
| 14:16:43 | <tomsmeding> | merijn: isn't it from the verb "tussen voegen" |
| 14:17:09 | <tomsmeding> | I hope the name has more to do with "invoegen" than with "een voeg" :') |
| 14:18:05 | <merijn> | tomsmeding: It can be both, that's the beauty! |
| 14:19:30 | → | zer0bitz joins (~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi) |
| 14:19:54 | → | zer0bitz__ joins (~zer0bitz@196.244.192.59) |
| 14:21:22 | → | ft joins (~ft@p508dbd59.dip0.t-ipconnect.de) |
| 14:22:36 | × | zer0bitz_ quits (~zer0bitz@196.244.192.59) (Ping timeout: 255 seconds) |
| 14:22:52 | <ski> | merijn : the word reminds me slightly of "Tussmørke"/"Tussmørker"/"Tussmörker" (meaning "twilight", "crepuscule". both dawn and dusk. the time when "thursar" ("giants") could be out and about) |
| 14:23:38 | × | zer0bitz quits (~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi) (Ping timeout: 246 seconds) |
| 14:24:14 | × | vpan quits (~0@212.117.1.172) (Quit: Leaving.) |
| 14:24:49 | <Square> | What other things, than explicit signatures / error handling, are monadic IO good for? |
| 14:25:07 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 14:25:25 | → | Chioque joins (~mansur@175.136.30.124) |
| 14:25:59 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 14:26:31 | <merijn> | Square: Well, ensuring purity for one? ;) |
| 14:27:18 | <merijn> | Square: basically, it enforces a separation between "evaluation" (haskell expressions) and "execution" (execution of side-effects) |
| 14:28:08 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 14:28:53 | <maerwald> | merijn: why call it side-effects? |
| 14:28:56 | <ski> | one of the main points of monads (in programming) is knowing when you're *not* using some particular kind of effect. (another is ability to define custom-tailored effects) |
| 14:29:37 | <merijn> | maerwald: Well, effects, I suppose |
| 14:29:48 | <merijn> | maerwald: Because sloppy writing while doing other things ;) |
| 14:30:18 | <maerwald> | I like to think of Haskell as side-effect free |
| 14:30:34 | <Square> | merijn, right. I think i get the part that the type encodes the (side) effects. But I was just curious if it added some extra functionality of sorts. |
| 14:30:34 | <maerwald> | if I want side effects, I can go back to C |
| 14:30:40 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 14:31:06 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 14:31:06 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 14:31:06 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 14:31:06 | × | jpds2 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 14:31:19 | <tomsmeding> | Square: the fact that an IO computation is a value that you can pass around, I guess? |
| 14:31:24 | → | moonsheep joins (~user@user/moonsheep) |
| 14:31:27 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 14:31:28 | → | califax joins (~califax@user/califx) |
| 14:31:36 | <tomsmeding> | % let action = print 42 in sequence (replicate 4 action) |
| 14:31:36 | <yahb2> | 42 ; 42 ; 42 ; 42 ; [(),(),(),()] |
| 14:31:45 | <moonsheep> | how can I bind a raw socket to an interface with the network package? |
| 14:31:47 | → | jpds2 joins (~jpds@gateway/tor-sasl/jpds) |
| 14:31:57 | <moonsheep> | bind takes a SocketAddress sa, but there is only one instance of it |
| 14:32:01 | <moonsheep> | (SockAddr) |
| 14:32:07 | <tomsmeding> | I've sometimes used the ability to put an IO action in a data structure, though admittedly not often |
| 14:32:09 | <merijn> | Square: Well, it basically means you can "store" effectful computation inside data structure and otherwise pass them as first class values |
| 14:32:26 | <merijn> | Square: For example, try this in ghci: map print [1..10] !! 3 |
| 14:32:28 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds) |
| 14:32:32 | <tomsmeding> | merijn: see my message above |
| 14:32:36 | <ski> | @quote world's.best.imperative |
| 14:32:37 | <lambdabot> | SPJ says: Haskell is the world's best imperative language. |
| 14:33:24 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 14:33:45 | <merijn> | tomsmeding: Storing it in data structures not super often, but the ability to pass them around as arguments to functions all the time |
| 14:34:20 | <merijn> | tomsmeding: The above example ends up executing them all, my example illustrates the separation by only doing one |
| 14:34:41 | <ski> | Square : you *can* achieve the same effect with thunks (parameterless function values), in a language with side-effects. but it's very easy to screw up, and people don't tend to think of that in terms of separation of evaluation and execution |
| 14:34:46 | <Square> | The explicit signature, or impossible to do IO in the dark, is pretty strong indeed. |
| 14:35:00 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 14:35:32 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 14:37:03 | <ski> | (iirc, LWT in OCaml, as well as CML (Concurrent ML) in SML, which both use a `bind' operation, did deviate from how you'd expect a monadic separation to behave, when i looked into that, years ago. might've changed since, though) |
| 14:37:58 | × | fserucas|eod quits (~fserucas|@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Ping timeout: 252 seconds) |
| 14:38:07 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 14:38:16 | → | zer0bitz joins (~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi) |
| 14:38:45 | <moonsheep> | does no one here know how to represent the address to bind an AF_PACKET RAW_SOCKET to? |
| 14:39:50 | <moonsheep> | I understand I have to instance SocketAddress, but what to? |
| 14:40:08 | <moonsheep> | how do those bytes have to look like? |
| 14:40:26 | <moonsheep> | are they just the MAC address and a protocol number concatted? |
| 14:40:48 | × | InstX1 quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 268 seconds) |
| 14:41:28 | <moonsheep> | actually I don't care for it to be raw, datagram AF_PACKET sockets are fine too |
| 14:41:50 | × | zer0bitz__ quits (~zer0bitz@196.244.192.59) (Ping timeout: 246 seconds) |
| 14:44:38 | → | zer0bitz_ joins (~zer0bitz@196.244.192.61) |
| 14:44:45 | <merijn> | moonsheep: What's the correct representation for C? |
| 14:45:09 | <merijn> | moonsheep: You'd probably have to dig into the network source to see how things are done and work it out (and ideally make a PR for the docs when you do ;)) |
| 14:45:56 | <moonsheep> | does that mean that it has to have the exact memory layout the C struct is? |
| 14:46:01 | <moonsheep> | *has |
| 14:46:22 | <geekosaur> | you probably need to know that representation to instance it properly |
| 14:46:24 | <merijn> | moonsheep: the SockAddr constructors are internally converted to the C struct (I assume) |
| 14:46:35 | <moonsheep> | oh yeah didn't think to look how those are implemented |
| 14:46:49 | <merijn> | moonsheep: I'm guessing there's no SockAddr constructor implemented for AF_PACKET/AF_RAW because no one has used them |
| 14:46:57 | <moonsheep> | yeah |
| 14:47:05 | <moonsheep> | anyway, this seems to be it https://man7.org/linux/man-pages/man7/packet.7.html (sockaddr_ll) |
| 14:47:09 | <merijn> | moonsheep: I would not be surprised if those are included for "completeness" sake, but no one has actually done/used this |
| 14:47:41 | <merijn> | moonsheep: In my experience it probably shouldn't be too hard to extend network to support this (well, assuming you're comforting with the C APIs and C programming) |
| 14:47:46 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 14:48:00 | <merijn> | Would be a nice PR, because that'd be a neat feature to have properly in network |
| 14:48:24 | <moonsheep> | yeah |
| 14:48:25 | × | zer0bitz quits (~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi) (Ping timeout: 252 seconds) |
| 14:48:37 | <moonsheep> | I want to learn more about low level networking stuff, but C is just |
| 14:48:38 | <moonsheep> | ugh |
| 14:48:49 | <moonsheep> | well to be fair the issue is not as much C itself but the poorly designed interface |
| 14:48:57 | <moonsheep> | and atrocious naming conventions |
| 14:49:16 | <merijn> | Yes :p |
| 14:49:18 | <moonsheep> | haskell just makes these things nicer by giving you more tools to abstract them away |
| 14:49:27 | <merijn> | I did some stuff with AF_PACKET in C a year or so ago, it was messy |
| 14:50:14 | × | acidjnk quits (~acidjnk@p200300d6e7137a61d962e1cf9864f38d.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 14:50:57 | <moonsheep> | btw why is Network.Socket.ByteString a thing? it just seems entirely identical to Network.Socket.Address but with unecessarily specialized SockAddr |
| 14:51:12 | <moonsheep> | (I'm talking about the sendTo/recvFrom functions) |
| 14:51:54 | × | razetime quits (~quassel@117.193.0.120) (Quit: No Ping reply in 180 seconds.) |
| 14:52:12 | <moonsheep> | damn the implementation of pokeSockAddr looks ugly as hell |
| 14:52:38 | <moonsheep> | what do all the {-# LINE xxxx "whatever" #-} mean? |
| 14:53:18 | → | razetime joins (~quassel@117.193.0.120) |
| 14:53:46 | <moonsheep> | other than that it seems fairly straightforward |
| 14:53:48 | <moonsheep> | uh |
| 14:53:51 | <moonsheep> | I'm gonna give this a shot |
| 14:54:36 | <geekosaur> | typically those are inserted by a preprocessor, which here implies the code is generated by hsc2hs or similar |
| 14:55:02 | <moonsheep> | would that preprocessor make the job any easier? |
| 14:55:05 | <moonsheep> | what is hsc? |
| 14:55:18 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 14:55:25 | <moonsheep> | looks interesting |
| 14:55:29 | <geekosaur> | haskell with extra annotations to convert and unpack/pack C structs |
| 14:55:40 | <geekosaur> | with help from the C compiler |
| 14:55:41 | × | jpds2 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 14:55:55 | <moonsheep> | sounds like exactly what I want |
| 14:56:05 | <geekosaur> | (so it's guaranteed to get the right lengths and offsets because it gets that information from gcc) |
| 14:56:13 | <moonsheep> | alright I'm going to clone network and try to patch it, instead of doing some externel ad-hoc solution |
| 14:57:09 | <merijn> | moonsheep: Basically, hsc produces a C program that prints Haskell code with a bunch of inserted "sizeof"s, so the final haskell code will have all the appropriate sizes/offsets for whatever C compiler/ABI you're using |
| 14:57:25 | <moonsheep> | that's perfect |
| 14:57:33 | <merijn> | (and potentially inlining ifdefs, etc.) |
| 14:59:08 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 15:00:23 | → | jpds2 joins (~jpds@gateway/tor-sasl/jpds) |
| 15:01:13 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 15:01:41 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 15:04:41 | <tomsmeding> | haskell code that generates c code that prints haskell code? |
| 15:04:49 | <tomsmeding> | what's the longest chain of consecutive \ in the hsc source |
| 15:05:56 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
| 15:06:09 | × | Chioque quits (~mansur@175.136.30.124) (Quit: WeeChat 3.7.1) |
| 15:08:33 | × | tessier quits (~treed@98.171.210.130) (Ping timeout: 268 seconds) |
| 15:08:37 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 15:09:07 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:09:45 | → | Chioque joins (~mansur@175.136.30.124) |
| 15:10:49 | → | zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 15:10:55 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) |
| 15:11:38 | → | fserucas|eod joins (~fserucas|@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 15:11:47 | <lortabac> | I'm profiling the memory usage of a program to investigate a memory leak. The problem is that the leak is very slow, the growing region in the graph always appears under OTHER |
| 15:11:53 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 15:12:41 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds) |
| 15:13:01 | <lortabac> | in order to make the relevant cost center apparent I guess I'd need to run the application for multiple days, which is not feasible on my computer |
| 15:14:24 | <lortabac> | is there some way to solve this problem? something like hiding the biggest non-relevant cost centers or maybe a better visualization tool |
| 15:15:20 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Ping timeout: 260 seconds) |
| 15:15:38 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 15:15:47 | × | motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit) |
| 15:16:09 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 15:17:58 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 15:18:17 | <merijn> | lortabac: Maybe? How much did you dig through the GHC user guide on profiling? |
| 15:18:36 | <merijn> | There's a whole bunch of knobs to tweak, iirc |
| 15:20:18 | <lortabac> | I haven't read 100% of the user guide section on profiling, I guess I can't avoid it |
| 15:20:49 | × | Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 260 seconds) |
| 15:20:58 | <merijn> | lortabac: tbh, the user guide is one of the most underrated pieces of the haskell/ghc ecosystem :p |
| 15:21:26 | <lortabac> | apparently heap profiling can also be produced as event logs, let me try it |
| 15:21:42 | <merijn> | lortabac: I don't recall if speedscope supported memory profiling too |
| 15:22:02 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 15:22:03 | ← | moonsheep parts (~user@user/moonsheep) (ERC 5.4 (IRC client for GNU Emacs 28.2)) |
| 15:22:05 | × | califax quits (~califax@user/califx) (Ping timeout: 255 seconds) |
| 15:24:00 | → | califax joins (~califax@user/califx) |
| 15:24:09 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 15:24:38 | × | Chioque quits (~mansur@175.136.30.124) (Quit: WeeChat 3.7.1) |
| 15:26:04 | × | Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Quit: BRB) |
| 15:26:51 | <lortabac> | now I only need a couple of hours to rebuild the whole ecosystem with -eventlog :) |
| 15:27:38 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 15:29:04 | → | Maeda joins (~Maeda@91-161-10-149.subs.proxad.net) |
| 15:30:34 | × | Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Client Quit) |
| 15:31:00 | → | Maeda joins (~Maeda@91-161-10-149.subs.proxad.net) |
| 15:33:51 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 15:36:49 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 15:37:52 | <merijn> | Hey, at least cabal can now automatically rebuild missing profiling stuff that's missing :p |
| 15:38:01 | <merijn> | That wasn't the case pre-v2 :p |
| 15:38:54 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds) |
| 15:39:46 | <schuelermine[m]> | does anybody else have a problem where Cabal doesn’t build the Hackage docs for QuickCheck and leads to Hackage docs for anything depending on it not being buildable? |
| 15:39:51 | geekosaur | remembers that. and the special "World" target to make it reuild everything |
| 15:40:14 | <geekosaur> | docs are apparently broken in 3.8 |
| 15:40:31 | <schuelermine[m]> | oh |
| 15:40:34 | <schuelermine[m]> | :( |
| 15:41:36 | <geekosaur> | I had cabal configured to build docs and it eventually failed with an assertion error that's not supposed to happen in a release version |
| 15:42:02 | × | zer0bitz_ quits (~zer0bitz@196.244.192.61) (Read error: Connection reset by peer) |
| 15:42:02 | <geekosaur> | but that was with HEAD built supposedly as a release version |
| 15:42:04 | → | gmg joins (~user@user/gehmehgeh) |
| 15:42:27 | geekosaur | submitted himself as a guinea pig for the new XDG support |
| 15:42:48 | <geekosaur> | (speaking of, I need to rebuild everything again at some point with docs disabled and see if it all works) |
| 15:53:59 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 15:55:05 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 15:58:46 | → | euandreh joins (~Thunderbi@179.214.113.107) |
| 16:00:04 | × | mimi1vx[m] quits (~osukupmat@2001:470:69fc:105::2:418d) (Quit: You have been kicked for being idle) |
| 16:00:53 | × | Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Quit: brb) |
| 16:01:23 | → | Maeda joins (~Maeda@91-161-10-149.subs.proxad.net) |
| 16:02:11 | → | rendar joins (~Paxman@user/rendar) |
| 16:02:15 | → | moonsheep joins (~user@user/moonsheep) |
| 16:02:31 | <ski> | (`hsc' is a groveller) |
| 16:02:45 | <rendar> | an author said that J lang (successor of APL, with "normal" symbols) is "haskell compressed", do you agree? |
| 16:03:03 | <moonsheep> | how would you guys prefer AF_PACKET addresses to be implemented? as another constructor of SockAddr, or a separate type that instances SockAddress? |
| 16:03:04 | × | vglfr quits (~vglfr@145.224.100.100) (Read error: Connection reset by peer) |
| 16:03:17 | → | vglfr joins (~vglfr@145.224.100.100) |
| 16:04:45 | <merijn> | rendar: I would definitely *not* consider J "haskell compressed" :p |
| 16:04:49 | <merijn> | It's a neat language, though |
| 16:05:14 | <rendar> | ahaha |
| 16:05:43 | <rendar> | well, that author i think referred to the fact that with J you compose symbols (functions on data) the same way you compose haskel functions (words) |
| 16:06:09 | <moonsheep> | well for now I'll just add it as another constructor, it seems easier |
| 16:10:16 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) |
| 16:10:46 | <tomsmeding> | rendar: more like Husk https://github.com/barbuz/Husk/wiki/Commands |
| 16:11:50 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:c3bb:6c84:6165:ec98) (Quit: WeeChat 2.8) |
| 16:14:13 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
| 16:14:25 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:14:32 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 268 seconds) |
| 16:15:53 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection) |
| 16:19:14 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 16:22:32 | <moonsheep> | does this look good? https://paste.tomsmeding.com/Zmo6S5cj |
| 16:23:01 | <moonsheep> | apparently hardware addresses are not necessarily our beloved 6-byte address, and can be up to 8 bytes long which is really annoyin |
| 16:23:40 | → | nate4 joins (~nate@98.45.169.16) |
| 16:23:56 | → | zer0bitz joins (~zer0bitz@196.244.192.62) |
| 16:25:05 | <moonsheep> | s/yin/ying/ |
| 16:26:50 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 246 seconds) |
| 16:27:19 | × | ph88 quits (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 16:28:25 | → | ph88 joins (~ph88@2a02:8109:9e00:71d0:a90d:e7d5:fe91:a32a) |
| 16:28:43 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 16:29:17 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 16:30:20 | × | Techcable quits (~Techcable@user/Techcable) (Ping timeout: 246 seconds) |
| 16:30:51 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 16:32:55 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 16:33:11 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 16:36:54 | × | ph88 quits (~ph88@2a02:8109:9e00:71d0:a90d:e7d5:fe91:a32a) (Ping timeout: 252 seconds) |
| 16:37:52 | × | zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Ping timeout: 252 seconds) |
| 16:38:30 | → | InstX1 joins (~Liam@2601:6c4:4081:54f0:c9a9:2cf7:f581:1191) |
| 16:39:34 | × | teo quits (~teo@user/teo) (Ping timeout: 260 seconds) |
| 16:39:43 | <c_wraith> | moonsheep: making a list field strict is essentially useless. And the Maybe field being strict is.. only of questionable use |
| 16:40:23 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 16:40:33 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 16:40:55 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 16:41:07 | <moonsheep> | I have no idea about strictness business, I'm simply trying to make it look sort of similar to code that I haven't written and don't understand :p |
| 16:41:34 | × | phma quits (phma@2001:5b0:210d:6148:bdc4:3c24:81d2:404a) (Read error: Connection reset by peer) |
| 16:42:33 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:42:49 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 16:42:49 | → | zeenk joins (~zeenk@188.26.82.148) |
| 16:43:47 | → | polo joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 16:44:42 | → | phma joins (~phma@host-67-44-208-151.hnremote.net) |
| 16:44:47 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 16:45:05 | → | califax joins (~califax@user/califx) |
| 16:45:51 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 16:49:53 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 16:51:11 | × | phma quits (~phma@host-67-44-208-151.hnremote.net) (Read error: Connection reset by peer) |
| 16:51:17 | × | polo quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Ping timeout: 276 seconds) |
| 16:54:22 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 16:54:37 | → | phma joins (~phma@2001:5b0:210f:1678:6fe2:e8ab:3dd5:da93) |
| 16:54:37 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 17:01:08 | × | zeenk quits (~zeenk@188.26.82.148) (Ping timeout: 246 seconds) |
| 17:01:09 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) |
| 17:01:15 | → | zeenk2 joins (~zeenk@2a02:2f04:a206:9700:de2a:390b:d890:3767) |
| 17:01:23 | <moonsheep> | alright, I've gotten something to compile |
| 17:01:27 | <moonsheep> | I'm gonna do some tests now |
| 17:01:48 | <moonsheep> | is there some easy way to run the executable produced by `stack build` with sudo? |
| 17:02:03 | <moonsheep> | obviously can't run stack with sudo, because it's going to try to install its own GHC, recompile everything ,etc. |
| 17:02:23 | <moonsheep> | I need root to be able to create raw sockets |
| 17:04:22 | <monochrom> | Bypass stack, find where the exe is and sudo it directly? Even copy it out to a directory you prefer? |
| 17:04:46 | <moonsheep> | well yeah that's what I'm doing, but I was wondering if there's not a more convenient way |
| 17:04:54 | <monochrom> | Is there also a "stack install" that does the latter? |
| 17:04:56 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 17:05:01 | <moonsheep> | the path is very strange, and there's a directory named with what looks suspiciously like a hash |
| 17:05:07 | <moonsheep> | I assume it may constnatly change? |
| 17:05:17 | <moonsheep> | is there at least some way to get the executable path reliably? |
| 17:05:20 | <monochrom> | (This is what's wrong with "projects" and "build tools". What about deployment?) |
| 17:05:27 | <moonsheep> | true |
| 17:05:51 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:06:07 | <moonsheep> | ah found it https://stackoverflow.com/questions/47852911/haskell-stack-locate-the-executable |
| 17:07:08 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit) |
| 17:08:12 | → | nunggu joins (~q@user/nunggu) |
| 17:08:53 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 17:09:27 | → | califax joins (~califax@user/califx) |
| 17:09:37 | → | Guest75 joins (~Guest75@178.141.177.81) |
| 17:09:54 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds) |
| 17:11:16 | → | dfee joins (~dfee@162-227-164-101.lightspeed.sntcca.sbcglobal.net) |
| 17:12:25 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection) |
| 17:12:54 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 17:13:56 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
| 17:14:55 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
| 17:15:02 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 17:15:33 | × | razetime quits (~quassel@117.193.0.120) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 17:17:02 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:20:23 | × | MajorBiscuit quits (~MajorBisc@c-001-027-007.client.tudelft.eduvpn.nl) (Ping timeout: 246 seconds) |
| 17:20:59 | → | Tuplanolla joins (~Tuplanoll@91-159-68-194.elisa-laajakaista.fi) |
| 17:25:17 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::4b68) (Ping timeout: 255 seconds) |
| 17:32:06 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 17:32:14 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:33:23 | <moonsheep> | success! https://imgur.com/a/CFQOutx |
| 17:34:12 | <moonsheep> | no clue what LLC is |
| 17:35:48 | <moonsheep> | https://paste.tomsmeding.com/Lh6d5MyE |
| 17:36:07 | <moonsheep> | still need to make type families for eth_p_all = 3 and arphrd_ether = 1 |
| 17:36:20 | → | zeenk joins (~zeenk@5.12.217.54) |
| 17:36:30 | × | zeenk2 quits (~zeenk@2a02:2f04:a206:9700:de2a:390b:d890:3767) (Ping timeout: 260 seconds) |
| 17:37:13 | <moonsheep> | if I manage to clean up the mess I've created in the network package, I might submit a patch |
| 17:37:27 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::4b68) |
| 17:39:48 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 17:40:07 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 17:40:42 | <geekosaur> | I presume it's the same as the next level of protocol decode (Logical Link Control) |
| 17:42:25 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 17:42:28 | × | Guest75 quits (~Guest75@178.141.177.81) (Quit: Client closed) |
| 17:44:54 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 17:46:08 | → | polo_ joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 17:46:36 | <moonsheep> | why does wireshark think it's LLC though? |
| 17:46:55 | <moonsheep> | I don't think I have control over that 0004 word that is emitted by send |
| 17:46:59 | <moonsheep> | I guess that's just something linux does? |
| 17:47:56 | × | zeenk quits (~zeenk@5.12.217.54) (Quit: Konversation terminated!) |
| 17:47:56 | → | econo joins (uid147250@user/econo) |
| 17:48:47 | <geekosaur> | might be the closest you get to raw ethernet packets according to the ethernet spec |
| 17:49:50 | <moonsheep> | sounds reasonable |
| 17:50:28 | × | Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 252 seconds) |
| 17:51:07 | <shapr> | GOOD MORNING |
| 17:51:13 | <shapr> | is it time for more Haskell code? |
| 17:51:41 | <shapr> | moonsheep: oh, I used to know the answer to that |
| 17:51:45 | shapr | thinks hard |
| 17:51:53 | <shapr> | LLC means "logical link control" |
| 17:53:32 | → | polo__ joins (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 17:53:35 | × | polo__ quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Changing host) |
| 17:53:35 | → | polo__ joins (~polo@user/polo) |
| 17:53:37 | polo__ | is now known as money |
| 17:53:44 | <shapr> | I think there's a bit that gets flipped to tell you whether it's an Ethernet packet or a very old school other kind of packet |
| 17:53:46 | <[exa]> | shapr: pls do more haskell code yes |
| 17:54:05 | × | money quits (~polo@user/polo) (Client Quit) |
| 17:54:07 | <shapr> | o hi [exa] ! |
| 17:54:10 | <shapr> | How you doing? |
| 17:54:20 | × | polo_ quits (~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Ping timeout: 276 seconds) |
| 17:55:28 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) |
| 17:56:23 | <shapr> | I should write a blog post about the library cdsmith and I worked on |
| 17:57:05 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:58:05 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 260 seconds) |
| 17:59:04 | <moonsheep> | shapr: I mean, I know what it means, I just don't know why it's there/Who put it there/why |
| 18:02:54 | <Rembane> | Maybe there's a RFC about it somewhere? |
| 18:03:37 | × | titibandit quits (~titibandi@xdsl-87-78-8-6.nc.de) (Remote host closed the connection) |
| 18:04:04 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 18:04:57 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 18:08:09 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection) |
| 18:08:12 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:09:45 | → | MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) |
| 18:10:49 | <geekosaur> | another thing to consider is that very old ethernet cards let you output nearly anything, but modern ones are smart and do much of the framing themselves so you have to output something compatible with that |
| 18:13:56 | → | acidjnk joins (~acidjnk@p200300d6e7137a61a1c25cbd352f97cb.dip0.t-ipconnect.de) |
| 18:18:02 | × | ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 18:18:50 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:20:13 | → | ec_ joins (~ec@gateway/tor-sasl/ec) |
| 18:20:37 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 18:21:09 | → | detuneattune joins (~detuneatt@user/detuneattune) |
| 18:22:47 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) |
| 18:23:48 | ← | moonsheep parts (~user@user/moonsheep) (ERC 5.4 (IRC client for GNU Emacs 28.2)) |
| 18:24:47 | × | MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 246 seconds) |
| 18:25:14 | × | nunggu quits (~q@user/nunggu) (Ping timeout: 255 seconds) |
| 18:25:16 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 268 seconds) |
| 18:26:24 | → | nunggu joins (~q@user/nunggu) |
| 18:33:45 | → | Techcable joins (~Techcable@user/Techcable) |
| 18:36:22 | <shapr> | aw, I missed moonsheep |
| 18:36:31 | <shapr> | I was gonna ask for a link to the project so I could engage my brain |
| 18:36:32 | <shapr> | dang |
| 18:36:42 | <shapr> | @message moonsheep is there a link to your project? I want to know more! |
| 18:36:42 | <lambdabot> | Maybe you meant: messages messages-loud messages? |
| 18:36:47 | <shapr> | @tell moonsheep is there a link to your project? I want to know more! |
| 18:36:48 | <lambdabot> | Consider it noted. |
| 18:37:03 | <EvanR> | Set a course for brain warp 9. Engage. |
| 18:39:28 | → | beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 18:40:25 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 18:42:16 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 18:44:10 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 260 seconds) |
| 18:44:56 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 18:45:09 | × | manwithl- quits (~manwithlu@194.177.28.176) (Remote host closed the connection) |
| 18:46:56 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection) |
| 18:47:28 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 18:49:31 | → | manwithluck joins (~manwithlu@194.177.28.176) |
| 18:51:27 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 18:55:27 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 18:56:42 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 18:57:17 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 18:58:00 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 19:01:00 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5) |
| 19:01:17 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 19:03:55 | <[exa]> | shapr: that looked like some decent networking finally |
| 19:04:03 | <[exa]> | or maybe sploits |
| 19:07:38 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 19:11:52 | → | nate4 joins (~nate@98.45.169.16) |
| 19:13:43 | <EvanR> | is mapM and mapM_ completely redundant, i.e. should I use traverse, for, and for_ instead in all cases where I'd use mapM. If there happens to be a monad |
| 19:14:39 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:14:41 | <EvanR> | should mapM be excised from brain |
| 19:16:03 | <Rembane> | They are shorter though, less to type. |
| 19:17:04 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 19:17:33 | <[exa]> | EvanR: sometimes you want to scream MONAD MONAD MONAD |
| 19:17:46 | <[exa]> | and mapM is precisely for that opportunity |
| 19:17:47 | <EvanR> | dammit, mapM_ is in prelude and for_ is not |
| 19:18:49 | <EvanR> | good point |
| 19:19:25 | × | manwithluck quits (~manwithlu@194.177.28.176) (Quit: ZNC 1.8.2 - https://znc.in) |
| 19:19:27 | <[exa]> | anyway afaik the consensus is to use traverse unless dire circumstances arise |
| 19:19:38 | <[exa]> | (hm traverse_ isn't in prelude either :( ) |
| 19:21:15 | → | manwithluck joins (~manwithlu@194.177.28.176) |
| 19:30:10 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 19:31:07 | × | acidjnk quits (~acidjnk@p200300d6e7137a61a1c25cbd352f97cb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 19:32:33 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 19:34:31 | <dsal> | I feel so bad every time I use for_ |
| 19:35:05 | <EvanR> | because you're "evaluating a bunch of stuff just for the side effects?" xD |
| 19:35:27 | <dsal> | Yeah. I didn't come to Haskell to write for_ loops. |
| 19:36:28 | <[exa]> | lol |
| 19:37:47 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Ping timeout: 248 seconds) |
| 19:39:44 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1) |
| 19:46:52 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 19:47:26 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) |
| 19:47:38 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 19:48:43 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 19:52:49 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Ping timeout: 252 seconds) |
| 19:53:01 | × | detuneattune quits (~detuneatt@user/detuneattune) (Read error: Connection reset by peer) |
| 19:58:56 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::4b68) (Ping timeout: 252 seconds) |
| 20:06:55 | → | detuneattune joins (~detuneatt@user/detuneattune) |
| 20:07:14 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 20:08:44 | × | califax quits (~califax@user/califx) (Ping timeout: 255 seconds) |
| 20:09:16 | × | detuneattune quits (~detuneatt@user/detuneattune) (Client Quit) |
| 20:09:25 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:10:06 | → | califax joins (~califax@user/califx) |
| 20:10:37 | → | detuneattune joins (~detuneatt@user/detuneattune) |
| 20:12:47 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 20:15:39 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds) |
| 20:16:06 | × | motherfsck quits (~motherfsc@user/motherfsck) (Remote host closed the connection) |
| 20:17:21 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 20:18:07 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 20:19:49 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 20:22:11 | Guest647 | is now known as money |
| 20:28:03 | <tomsmeding> | I mean, sometimes you have to :p |
| 20:30:13 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:30:23 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 20:32:01 | × | euandreh quits (~Thunderbi@179.214.113.107) (Quit: euandreh) |
| 20:32:25 | → | euandreh joins (~Thunderbi@179.214.113.107) |
| 20:32:47 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 20:33:29 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Remote host closed the connection) |
| 20:34:11 | → | nate4 joins (~nate@98.45.169.16) |
| 20:34:41 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 20:38:22 | → | Guest84 joins (~Guest84@23.19.117.56) |
| 20:38:36 | <dolio> | What's the problem? |
| 20:39:08 | → | pavonia joins (~user@user/siracusa) |
| 20:39:13 | <dolio> | Like, for_ is how I calculate the free variables of something. |
| 20:39:19 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 20:39:44 | <dolio> | (Possibly not for_ literally, but something equivalent.) |
| 20:44:53 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 20:46:26 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:47:08 | <[Leary]> | I like for_. My only complaint is that more often what I actually want is `mfor = flip foldMap` or `apfor xs f = getAp $ mfor xs (Ap . f)`. |
| 20:48:06 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) |
| 20:51:45 | → | acidjnk joins (~acidjnk@p200300d6e7137a61a1c25cbd352f97cb.dip0.t-ipconnect.de) |
| 20:52:16 | → | zeenk joins (~zeenk@2a02:2f04:a213:900:ec6b:90ab:f67c:4c1a) |
| 20:53:09 | <dsal> | The name just doesn't taste good to me. I still use it. |
| 20:53:47 | <dsal> | The weirdest thing is that people use it for traversing a Maybe. If you think of Maybe as a zero-or-one container, that sort of works, I guess. |
| 20:55:55 | <dolio> | Yeah, it's nice for that, too. |
| 20:56:35 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 21:00:56 | × | jpds2 quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 21:12:04 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection) |
| 21:21:12 | × | dtman34 quits (~dtman34@2601:447:d080:83c8:a3db:9010:bf80:cdf5) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
| 21:21:33 | → | dtman34 joins (~dtman34@2601:447:d080:83c8:24bc:55ba:13b9:cc55) |
| 21:23:50 | <c_wraith> | before the FTP proposal went through, people used to ask for whenJust_ a lot. Including me. Not realizing it was traverse_ |
| 21:26:49 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 21:28:13 | <dsal> | Yeah, I did a similar thing where I gave it a name that was a little easier to read than `traverse_` everywhere. Otherwise, my code would just be all the permutations of coerce and traverse and fmap and bind. |
| 21:31:10 | × | money quits (sid532813@user/polo) (Killed (molybdenum.libera.chat (Nickname regained by services))) |
| 21:35:05 | × | InstX1 quits (~Liam@2601:6c4:4081:54f0:c9a9:2cf7:f581:1191) (Ping timeout: 260 seconds) |
| 21:35:35 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 21:37:19 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 21:38:22 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:40:39 | → | InstX1_ joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) |
| 21:40:52 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Client Quit) |
| 21:42:21 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 21:42:29 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 21:42:36 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Ping timeout: 268 seconds) |
| 21:45:55 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 21:48:36 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 21:48:40 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) |
| 21:56:04 | × | Xeroine quits (~Xeroine@user/xeroine) (Read error: Connection reset by peer) |
| 21:56:12 | → | Guest6024 joins (sid532813@id-532813.tinside.irccloud.com) |
| 21:56:25 | → | sammelweis joins (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) |
| 21:57:56 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 22:02:17 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:03:21 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 22:03:30 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection) |
| 22:06:32 | → | chromoblob joins (~user@37.113.164.122) |
| 22:06:43 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::4b68) |
| 22:09:23 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 260 seconds) |
| 22:12:04 | × | causal quits (~user@50.35.83.177) (Quit: WeeChat 3.7.1) |
| 22:18:31 | → | goober joins (~goober@90-231-13-185-no3430.tbcn.telia.com) |
| 22:21:13 | <iteratee_> | I have a question about linear types |
| 22:21:17 | iteratee_ | is now known as iteratee |
| 22:21:50 | <Rembane> | iteratee: Go ahead! Someone here should be able to answer it. :) |
| 22:22:22 | <iteratee> | The description says that "Passing x to a linear function" is linear, but in what I've been experimenting, that doesn't seem quite accurate. |
| 22:22:25 | <EvanR> | sorry iteratee_ already referred to the question, it's gone |
| 22:22:57 | <iteratee> | EvanR: I have "Many" questions about linear types. |
| 22:23:43 | <iteratee> | I think it would be more accurate to say "Passing x to a linear function and using the result linearly" |
| 22:23:53 | <davean> | I'm worse off, I got an answer about linear types. |
| 22:25:04 | <iteratee> | Which is sometimes what you want, but it tends to infect your program because you have a value that you must consume linearly, and you do by passing it to a linear function, but now you have to track the linearity of the result, even if you don't care any more. |
| 22:25:52 | <EvanR> | I vaguely remember the details of this were in the linear haskell paper |
| 22:26:02 | <EvanR> | detailed caveats |
| 22:26:05 | <iteratee> | Is there a way to annotate a function as: a %1 -> %Many b? So that I can consume the a linearly, but I'm allowed to use the result non-linearly? |
| 22:26:55 | <iteratee> | The restriction makes sense. If I put the linear argument into a data structure or a newtype, I shouldn't be able to just break linearity. |
| 22:28:24 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds) |
| 22:29:20 | × | myme quits (~myme@40.51-175-185.customer.lyse.net) (Quit: WeeChat 3.7.1) |
| 22:30:54 | → | myme joins (~myme@40.51-175-185.customer.lyse.net) |
| 22:30:59 | <iteratee> | But If I'm enforcing linearity of a random number generator, I'd like you to be able to compute x * x when x is random. |
| 22:32:02 | <iteratee> | I guess you can use a GADT wrapper for the return type as a crutch for now. |
| 22:32:41 | <geekosaur> | isn't there something for that? |
| 22:33:12 | <iteratee> | data RandResult g a where RandResult :: g %1 -> a -> RandResult |
| 22:33:26 | × | biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer) |
| 22:33:28 | <iteratee> | geekosaur: Yes, see above^ |
| 22:33:47 | <geekosaur> | https://hackage.haskell.org/package/linear-base-0.3.0/docs/Prelude-Linear.html#g:16 |
| 22:36:02 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:38:06 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
| 22:38:30 | → | biberu joins (~biberu@user/biberu) |
| 22:41:34 | × | myme quits (~myme@40.51-175-185.customer.lyse.net) (Remote host closed the connection) |
| 22:42:43 | × | zeenk quits (~zeenk@2a02:2f04:a213:900:ec6b:90ab:f67c:4c1a) (Quit: Konversation terminated!) |
| 22:43:30 | → | myme joins (~myme@40.51-175-185.customer.lyse.net) |
| 22:45:10 | → | beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
| 22:50:29 | <iteratee> | geekosaur: Thanks, that's interesting, and I ended up doing something like that in my code. |
| 22:51:09 | × | TonyStone quits (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Ping timeout: 260 seconds) |
| 22:51:26 | <iteratee> | But it still enforces linear discipline. I can pass a linear Int (Or any Dupable) to as many linear functions as I want, but I can't pass it to a nonlinear function. |
| 22:53:18 | <iteratee> | I think what I want is Ur |
| 22:56:20 | <geekosaur> | possibly `forget`? |
| 22:57:10 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 23:03:09 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:04:25 | → | TonyStone joins (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) |
| 23:04:36 | <iteratee> | No, I just needed to write some helper functions that return (Ur a) instead of a. |
| 23:05:12 | <iteratee> | Then you can use monadic linear bind and use the linear value inside the continuation. |
| 23:05:55 | → | ph88 joins (~ph88@2a02:8109:9e00:71d0:a90d:e7d5:fe91:a32a) |
| 23:10:01 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 252 seconds) |
| 23:10:06 | → | nate4 joins (~nate@98.45.169.16) |
| 23:11:02 | → | libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) |
| 23:15:04 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 23:18:05 | × | chomwitt quits (~chomwitt@2a02:587:7a0a:c00:1ac0:4dff:fedb:a3f1) (Ping timeout: 255 seconds) |
| 23:25:42 | → | bilegeek joins (~bilegeek@2600:1008:b022:192c:fa51:6abb:9a1d:6b9e) |
| 23:26:41 | × | ph88 quits (~ph88@2a02:8109:9e00:71d0:a90d:e7d5:fe91:a32a) (Quit: Leaving) |
| 23:27:12 | × | machinedgod quits (~machinedg@clnet-p10-126.ikbnet.co.at) (Ping timeout: 252 seconds) |
| 23:28:37 | × | Tuplanolla quits (~Tuplanoll@91-159-68-194.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:33:30 | × | urdh quits (~urdh@user/urdh) (*.net *.split) |
| 23:33:30 | × | dixie quits (~dixie@real.wilbury.sk) (*.net *.split) |
| 23:33:30 | × | swistak quits (~swistak@185.21.216.141) (*.net *.split) |
| 23:33:30 | × | blades quits (~blades@204.48.29.163) (*.net *.split) |
| 23:33:30 | × | mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (*.net *.split) |
| 23:33:30 | × | darkling quits (~darkling@2001-ba8-1f1-f0e6-0-0-0-2.autov6rev.bitfolk.space) (*.net *.split) |
| 23:33:30 | × | leah2 quits (~leah@vuxu.org) (*.net *.split) |
| 23:33:30 | × | energizer quits (~energizer@user/energizer) (*.net *.split) |
| 23:33:30 | × | dumptruckman quits (~dumptruck@45-33-69-234.ip.linodeusercontent.com) (*.net *.split) |
| 23:33:30 | × | pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-50-65-93-192-212.dsl.bell.ca) (*.net *.split) |
| 23:33:38 | → | dixie joins (~dixie@real.wilbury.sk) |
| 23:33:40 | → | dumptruckman joins (~dumptruck@45-33-69-234.ip.linodeusercontent.com) |
| 23:33:41 | → | mhatta joins (~mhatta@www21123ui.sakura.ne.jp) |
| 23:33:41 | → | darkling joins (~darkling@2001-ba8-1f1-f0e6-0-0-0-2.autov6rev.bitfolk.space) |
| 23:34:05 | → | pieguy128 joins (~pieguy128@65.93.192.212) |
| 23:34:06 | → | leah2 joins (~leah@vuxu.org) |
| 23:34:11 | → | swistak joins (~swistak@185.21.216.141) |
| 23:34:24 | → | blades joins (~blades@204.48.29.163) |
| 23:34:30 | → | energizer joins (~energizer@user/energizer) |
| 23:35:50 | → | urdh joins (~urdh@user/urdh) |
| 23:44:48 | × | Cale quits (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Read error: Connection reset by peer) |
| 23:45:13 | → | Cale joins (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) |
| 23:47:18 | → | machinedgod joins (~machinedg@clnet-b05-118.ikbnet.co.at) |
| 23:50:38 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 23:52:43 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds) |
All times are in UTC on 2022-11-11.