2024/04/15

2024-04-15 00:04:06 +0200ph88(~ph88@91.64.63.48) (Remote host closed the connection)
2024-04-15 00:11:39 +0200Achylles_(~Achylles@45.182.57.98)
2024-04-15 00:24:00 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-04-15 00:31:13 +0200Achylles_(~Achylles@45.182.57.98) (Remote host closed the connection)
2024-04-15 00:32:04 +0200bitmapper_(uid464869@id-464869.lymington.irccloud.com)
2024-04-15 00:36:53 +0200bitmapper_bitmapper
2024-04-15 00:51:47 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-04-15 00:59:58 +0200madeleine-sydney(~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
2024-04-15 01:00:12 +0200madeleine-sydney(~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Client Quit)
2024-04-15 01:09:42 +0200 <haskellbridge> <s​m> Liamzee: ansi-terminal-game is better suited to games
2024-04-15 01:11:27 +0200tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-04-15 01:15:28 +0200 <janus> cheater: i don't know but i use fast-tags: https://hackage.haskell.org/package/fast-tags
2024-04-15 01:15:45 +0200tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 252 seconds)
2024-04-15 01:18:19 +0200picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Ping timeout: 256 seconds)
2024-04-15 01:40:18 +0200picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur)
2024-04-15 01:41:06 +0200acidjnk(~acidjnk@p200300d6e714dc113d01b076fdd4c432.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2024-04-15 01:41:12 +0200 <Inst> thanks for the suggestion @sm
2024-04-15 01:41:26 +0200 <Inst> also, I'm not being reckless, and this is embarrassing, but...
2024-04-15 01:41:43 +0200 <Inst> I'm testing hackage-server right now on my system, and I can't get the behavior to be the way I need it to be
2024-04-15 01:41:56 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
2024-04-15 01:42:36 +0200 <geekosaur> you probably want to ask in #hackage:matrix.org
2024-04-15 01:42:46 +0200 <geekosaur> (or #hackage on libera)
2024-04-15 01:44:23 +0200 <Inst> thanks
2024-04-15 01:44:43 +0200 <geekosaur> that said, there's no guarantee that "the way you need it to be" was included as a design consideration
2024-04-15 01:45:19 +0200 <Inst> oh, it's simply getting browse to sort by lastUpload
2024-04-15 01:54:28 +0200 <Inst> so unless I'm missing something, sm, doesn't seem to be as simple as you suggested?
2024-04-15 01:54:39 +0200 <Inst> in ref to a convo a couple of days back
2024-04-15 01:59:11 +0200 <Inst> sm: should I consider this beyond my paygrade and simply submit it as an issue and walk off?
2024-04-15 01:59:37 +0200mud(~mud@user/kadoban) (Quit: quit)
2024-04-15 02:01:10 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2024-04-15 02:02:01 +0200califax(~califax@user/califx) (Remote host closed the connection)
2024-04-15 02:06:22 +0200delyan_(sid523379@id-523379.hampstead.irccloud.com)
2024-04-15 02:06:43 +0200califax(~califax@user/califx)
2024-04-15 02:11:12 +0200peterbecich(~Thunderbi@47.229.123.186)
2024-04-15 02:15:10 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-04-15 02:29:23 +0200peterbecich(~Thunderbi@47.229.123.186) (Ping timeout: 264 seconds)
2024-04-15 02:36:35 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 264 seconds)
2024-04-15 02:48:09 +0200euphores(~SASL_euph@user/euphores) (Ping timeout: 255 seconds)
2024-04-15 03:10:53 +0200mei(~mei@user/mei) (Ping timeout: 240 seconds)
2024-04-15 03:17:55 +0200 <haskellbridge> <s​m> which conversation Inst ?
2024-04-15 03:18:21 +0200 <Inst> the time i was annoyed at hackage, you suggested i just try to pr it
2024-04-15 03:18:44 +0200 <Inst> so of course i'm testing the pr, and nope, doesn't seem to work :(
2024-04-15 03:19:23 +0200 <haskellbridge> <s​m> really, if so I'm sure I wasn't to rash as to use the word simple ;)
2024-04-15 03:19:40 +0200 <haskellbridge> <s​m> I thought I suggested flora
2024-04-15 03:20:01 +0200 <Inst> i mean that i was talking about how the browse page doesn't show the packages by last upload
2024-04-15 03:21:10 +0200 <haskellbridge> <s​m> oh right, I remember
2024-04-15 03:21:42 +0200 <haskellbridge> <s​m> nothing is as simple as it seems.. but relatively, hopefully
2024-04-15 03:21:44 +0200 <haskellbridge> <s​m> (afk)
2024-04-15 03:31:28 +0200mjs2600(~mjs2600@c-174-169-225-239.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2024-04-15 03:42:39 +0200Sgeo(~Sgeo@user/sgeo)
2024-04-15 03:48:11 +0200otto_s(~user@p4ff27ad3.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2024-04-15 03:48:31 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-04-15 03:49:02 +0200rvalue(~rvalue@user/rvalue)
2024-04-15 03:49:50 +0200otto_s(~user@p4ff27773.dip0.t-ipconnect.de)
2024-04-15 03:52:17 +0200madeleine-sydney(~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
2024-04-15 03:53:43 +0200werneta(~werneta@71.83.160.242)
2024-04-15 03:57:01 +0200sroso(~sroso@user/SrOso)
2024-04-15 04:02:11 +0200mei(~mei@user/mei)
2024-04-15 04:11:39 +0200She(haveident@libera/staff/she/her) (Quit: Either upgrades, or the world's ending.)
2024-04-15 04:12:17 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds)
2024-04-15 04:19:50 +0200 <Axman6> It's been a while since I've wrapped a C library, are there any tools which help automate the job?
2024-04-15 04:20:00 +0200 <Axman6> any new tools I guess
2024-04-15 04:25:44 +0200 <probie> Not exactly a tool, but if a while is longer than 12 years, capi is a "cool new thing" (https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/ffi.html#the-capi-calling-convention)
2024-04-15 04:26:25 +0200 <geekosaur> of course, if it's been long enough, it's a cool old thing
2024-04-15 04:30:07 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2024-04-15 04:32:09 +0200tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-04-15 04:33:36 +0200 <Axman6> Mostly I'm looking for any assistance for working with/parsing structs I think
2024-04-15 04:33:57 +0200 <geekosaur> I think c2hs is still the last word there
2024-04-15 04:40:59 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-04-15 04:42:39 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
2024-04-15 04:45:27 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::)
2024-04-15 04:46:47 +0200td_(~td@i53870917.versanet.de) (Ping timeout: 264 seconds)
2024-04-15 04:48:09 +0200td_(~td@i53870931.versanet.de)
2024-04-15 04:50:51 +0200 <jackdk> Last time I wrapped a C lib (many years ago) I struggled to make c2hs do what I want and wrote raw hsc2hs. But libtelnet was small
2024-04-15 04:59:04 +0200igemnace(~ian@user/igemnace)
2024-04-15 05:02:20 +0200rosco(~rosco@aq027043.dynamic.ppp.asahi-net.or.jp) (Ping timeout: 252 seconds)
2024-04-15 05:05:46 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2024-04-15 05:10:17 +0200bcksl(~bcksl@user/bcksl) (Quit: \)
2024-04-15 05:10:17 +0200end(~end@user/end/x-0094621) (Quit: end)
2024-04-15 05:11:21 +0200tri(~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
2024-04-15 05:11:53 +0200tri(~tri@ool-18bc2e74.dyn.optonline.net)
2024-04-15 05:12:18 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds)
2024-04-15 05:19:19 +0200rosco(~rosco@2001:240:2479:ed58:69a0:efe8:3c3a:6c48)
2024-04-15 05:23:21 +0200bcksl(~bcksl@user/bcksl)
2024-04-15 05:28:32 +0200end(~end@user/end/x-0094621)
2024-04-15 05:29:06 +0200JimL(~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2024-04-15 05:30:04 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2024-04-15 05:31:58 +0200JimL(~quassel@89.162.16.26)
2024-04-15 05:34:26 +0200steew_(~steew@user/steew)
2024-04-15 05:35:16 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-04-15 05:35:16 +0200steew(~steew@user/steew) (Ping timeout: 260 seconds)
2024-04-15 05:35:16 +0200steew_steew
2024-04-15 05:42:16 +0200oneeyedalien(~oneeyedal@user/oneeyedalien)
2024-04-15 05:51:07 +0200reki(~halloy490@broadband-5-228-80-43.ip.moscow.rt.ru)
2024-04-15 05:54:42 +0200xigua(~xigua@user/xigua) (Read error: Connection reset by peer)
2024-04-15 05:54:56 +0200xigua(~xigua@user/xigua)
2024-04-15 05:56:03 +0200oneeyedalien(~oneeyedal@user/oneeyedalien) (Quit: Leaving)
2024-04-15 05:56:42 +0200xdminsy(~xdminsy@117.147.70.203)
2024-04-15 06:00:00 +0200aforemny_(~aforemny@2001:9e8:6cdd:b100:9200:9bf0:8eb2:3efb)
2024-04-15 06:00:09 +0200xal(~xal@mx1.xal.systems) ()
2024-04-15 06:00:31 +0200aforemny(~aforemny@2001:9e8:6cf7:a400:800f:dec:5362:bd8) (Ping timeout: 256 seconds)
2024-04-15 06:00:33 +0200actioninja(~actioninj@user/actioninja) (Quit: see ya mane)
2024-04-15 06:00:37 +0200xal(~xal@mx1.xal.systems)
2024-04-15 06:00:57 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 272 seconds)
2024-04-15 06:00:59 +0200actioninja(~actioninj@user/actioninja)
2024-04-15 06:04:03 +0200hippoid(~hippoid@c-98-213-162-40.hsd1.il.comcast.net) (Changing host)
2024-04-15 06:04:03 +0200hippoid(~hippoid@user/hippoid)
2024-04-15 06:07:51 +0200igemnace(~ian@user/igemnace) (Quit: WeeChat 4.2.2)
2024-04-15 06:11:38 +0200haskellbridge(~haskellbr@069-135-003-034.biz.spectrum.com) (Ping timeout: 252 seconds)
2024-04-15 06:26:33 +0200michalz(~michalz@185.246.207.215)
2024-04-15 06:28:25 +0200euleritian(~euleritia@dynamic-176-004-201-124.176.4.pool.telefonica.de) (Read error: Connection reset by peer)
2024-04-15 06:28:43 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-04-15 06:32:32 +0200igemnace(~ian@user/igemnace)
2024-04-15 06:33:41 +0200 <geekosaur> The bridge is down because my Internet connection is out
2024-04-15 06:34:07 +0200 <geekosaur> Sending this from my phone
2024-04-15 06:41:19 +0200Square(~Square@user/square) (Ping timeout: 256 seconds)
2024-04-15 06:50:59 +0200mei(~mei@user/mei) (Ping timeout: 264 seconds)
2024-04-15 06:51:32 +0200mei(~mei@user/mei)
2024-04-15 06:58:34 +0200 <Inst> thanks for having it up at all :)
2024-04-15 07:01:46 +0200euphores(~SASL_euph@user/euphores)
2024-04-15 07:02:15 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
2024-04-15 07:04:07 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2024-04-15 07:16:30 +0200greenflower(~greenflow@2401:4900:1cb9:42b6:23bf:816c:a5c5:7803)
2024-04-15 07:18:03 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2024-04-15 07:30:07 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-04-15 07:34:32 +0200zetef(~quassel@5.2.182.99)
2024-04-15 07:37:47 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2024-04-15 07:41:40 +0200euleritian(~euleritia@dynamic-176-004-201-124.176.4.pool.telefonica.de)
2024-04-15 07:48:04 +0200greenflower(~greenflow@2401:4900:1cb9:42b6:23bf:816c:a5c5:7803) (Ping timeout: 250 seconds)
2024-04-15 07:50:14 +0200Guest79(~Guest79@89.185.25.131)
2024-04-15 07:53:02 +0200Guest79(~Guest79@89.185.25.131) (Client Quit)
2024-04-15 08:17:03 +0200califax(~califax@user/califx) (Remote host closed the connection)
2024-04-15 08:20:49 +0200mima(~mmh@aftr-62-216-211-38.dynamic.mnet-online.de)
2024-04-15 08:21:09 +0200califax(~califax@user/califx)
2024-04-15 08:26:43 +0200philopsos(~caecilius@user/philopsos) (Ping timeout: 256 seconds)
2024-04-15 08:28:57 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2024-04-15 08:29:32 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-04-15 08:29:54 +0200igemnace(~ian@user/igemnace) (Read error: Connection reset by peer)
2024-04-15 08:30:33 +0200yeitrafferin(~user@2a04:4540:720f:f000:1c8b:86e5:bfad:3ed4)
2024-04-15 08:32:26 +0200euleritian(~euleritia@dynamic-176-004-201-124.176.4.pool.telefonica.de) (Read error: Connection reset by peer)
2024-04-15 08:33:53 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-04-15 08:34:43 +0200gentauro(~gentauro@user/gentauro)
2024-04-15 08:37:00 +0200madeleine-sydney(~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!)
2024-04-15 08:45:29 +0200rekahsoft(~rekahsoft@184.148.6.204)
2024-04-15 08:47:32 +0200igemnace(~ian@user/igemnace)
2024-04-15 08:52:22 +0200Miroboru(~myrvoll@178-164-114.82.3p.ntebredband.no)
2024-04-15 08:54:34 +0200reki(~halloy490@broadband-5-228-80-43.ip.moscow.rt.ru) (Remote host closed the connection)
2024-04-15 08:54:58 +0200rekahsoft(~rekahsoft@184.148.6.204) (Ping timeout: 256 seconds)
2024-04-15 08:59:12 +0200 <tomsmeding> does a Coercible constraint have a runtime representation? If I put a 'Coercible a b =>' constraint on a GADT constructor, will there be an actual dictionary at runtime?
2024-04-15 08:59:21 +0200werneta(~werneta@71.83.160.242) (Quit: leaving)
2024-04-15 09:01:19 +0200zetef(~quassel@5.2.182.99) (Ping timeout: 260 seconds)
2024-04-15 09:04:20 +0200rvalue-(~rvalue@user/rvalue)
2024-04-15 09:05:16 +0200rvalue(~rvalue@user/rvalue) (Ping timeout: 260 seconds)
2024-04-15 09:08:20 +0200rvalue-rvalue
2024-04-15 09:12:02 +0200 <probie> tomsmeding: It looks like it to me. See the generated core for `foo` in https://play.haskell.org/saved/bpferROD
2024-04-15 09:13:01 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2024-04-15 09:21:44 +0200mei(~mei@user/mei) (Quit: mei)
2024-04-15 09:23:15 +0200mei(~mei@user/mei)
2024-04-15 09:25:06 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2024-04-15 09:25:54 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2024-04-15 09:27:59 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-04-15 09:28:32 +0200 <[Leary]> Core contains types (including coersions) and calls to `cast` which presumably are all erased. I wouldn't presume the `Coercible` dictionary is represented at runtime based on its presence in Core. The STG might be more illuminating. Or just ask #ghc.
2024-04-15 09:29:11 +0200danza(~francesco@151.37.246.125)
2024-04-15 09:29:50 +0200zetef(~quassel@5.2.182.99)
2024-04-15 09:31:30 +0200 <lyxia> the dictionary takes a spot in the constructor arguments even in the cmm
2024-04-15 09:31:54 +0200acidjnk(~acidjnk@p200300d6e714dc36e896bc542a6281cf.dip0.t-ipconnect.de)
2024-04-15 09:34:04 +0200 <probie> [Leary]: You're right, relying on core is not actually indicative. However, looking at the generated assembly, the Coercible dictionary definitely gets passed to the constructor, as to what it contains, I'm not sure
2024-04-15 09:37:25 +0200 <[Leary]> I imagine it's entirely vestigial.
2024-04-15 09:38:34 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds)
2024-04-15 09:38:39 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-04-15 09:39:47 +0200 <probie> A pointer to whatever `GHC.Types.MkCoercible_con_info` is
2024-04-15 09:43:00 +0200danza(~francesco@151.37.246.125) (Ping timeout: 268 seconds)
2024-04-15 09:45:03 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2024-04-15 09:48:52 +0200dcoutts(~duncan@cpc69400-oxfd27-2-0-cust750.4-3.cable.virginm.net) (Ping timeout: 246 seconds)
2024-04-15 09:49:04 +0200__monty__(~toonn@user/toonn)
2024-04-15 09:52:42 +0200chele(~chele@user/chele)
2024-04-15 10:00:50 +0200Core2410(~rosco@2001:240:242c:d62d:b170:9c25:b014:c1d3)
2024-04-15 10:02:26 +0200rosco(~rosco@2001:240:2479:ed58:69a0:efe8:3c3a:6c48) (Ping timeout: 268 seconds)
2024-04-15 10:04:45 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-04-15 10:05:02 +0200 <mesaoptimizer> how do I get auto-import in emacs in haskell? I'm using eglot and HLS
2024-04-15 10:06:07 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-04-15 10:12:41 +0200 <tomsmeding> thanks all! I can't imagine there to be actual interesting data in the MkCoercible object though; I guess (from grepping ghc) it ought to be a ~R# object inside, which perhaps has no runtime representation?
2024-04-15 10:13:06 +0200Rodney_(~Rodney@176.254.244.83) (Ping timeout: 252 seconds)
2024-04-15 10:21:42 +0200tzh(~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz)
2024-04-15 10:21:57 +0200rosco(~rosco@2001:240:242c:d62d:de59:f92f:5995:ec84)
2024-04-15 10:22:08 +0200danse-nr3(~danse-nr3@151.37.246.125)
2024-04-15 10:22:08 +0200mei(~mei@user/mei) (Killed (calcium.libera.chat (Nickname regained by services)))
2024-04-15 10:22:13 +0200mei(~mei@user/mei)
2024-04-15 10:22:16 +0200Miroboru(~myrvoll@178-164-114.82.3p.ntebredband.no) (Ping timeout: 260 seconds)
2024-04-15 10:22:38 +0200danse-nr3(~danse-nr3@151.37.246.125) (Read error: Connection reset by peer)
2024-04-15 10:24:08 +0200Core2410(~rosco@2001:240:242c:d62d:b170:9c25:b014:c1d3) (Ping timeout: 260 seconds)
2024-04-15 10:25:03 +0200danse-nr3(~danse-nr3@151.37.246.125)
2024-04-15 10:29:18 +0200gehmehgeh(~user@user/gehmehgeh)
2024-04-15 10:29:35 +0200gehmehgehgmg
2024-04-15 10:29:45 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex)
2024-04-15 10:31:30 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds)
2024-04-15 10:37:10 +0200qqq(~qqq@92.43.167.61)
2024-04-15 10:42:44 +0200Etabeta13(~Etabeta1@151.30.10.212)
2024-04-15 10:43:51 +0200Etabeta1(~Etabeta1@user/meow/Etabeta1) (Ping timeout: 256 seconds)
2024-04-15 10:43:51 +0200Etabeta13Etabeta1
2024-04-15 10:43:55 +0200danse-nr3(~danse-nr3@151.37.246.125) (Remote host closed the connection)
2024-04-15 10:44:17 +0200danse-nr3(~danse-nr3@151.37.246.125)
2024-04-15 10:48:10 +0200Miroboru(~myrvoll@178-164-114.82.3p.ntebredband.no)
2024-04-15 10:55:07 +0200ft(~ft@p4fc2a20e.dip0.t-ipconnect.de) (Quit: leaving)
2024-04-15 10:55:36 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2024-04-15 10:55:42 +0200dcoutts(~duncan@cpc69400-oxfd27-2-0-cust750.4-3.cable.virginm.net)
2024-04-15 11:11:17 +0200zetef(~quassel@5.2.182.99) (Ping timeout: 272 seconds)
2024-04-15 11:11:30 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2024-04-15 11:12:24 +0200img(~img@user/img)
2024-04-15 11:18:24 +0200Pixi`(~Pixi@user/pixi)
2024-04-15 11:21:35 +0200Pixi(~Pixi@user/pixi) (Ping timeout: 264 seconds)
2024-04-15 11:25:45 +0200zetef(~quassel@5.2.182.99)
2024-04-15 11:29:35 +0200sawilagar(~sawilagar@user/sawilagar)
2024-04-15 11:38:41 +0200raoul(~raoul@95.179.203.88) (Remote host closed the connection)
2024-04-15 11:49:34 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-04-15 11:50:05 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-04-15 11:51:26 +0200danse-nr3(~danse-nr3@151.37.246.125) (Read error: Connection reset by peer)
2024-04-15 11:52:21 +0200danse-nr3(~danse-nr3@151.37.246.125)
2024-04-15 12:03:59 +0200Core5214(~rosco@2001:240:242c:d62d:8006:d50:9606:4eb4)
2024-04-15 12:06:20 +0200danse-nr3(~danse-nr3@151.37.246.125) (Ping timeout: 260 seconds)
2024-04-15 12:06:53 +0200rosco(~rosco@2001:240:242c:d62d:de59:f92f:5995:ec84) (Ping timeout: 240 seconds)
2024-04-15 12:08:38 +0200zfnmxt(~zfnmxt@user/zfnmxt) (Remote host closed the connection)
2024-04-15 12:11:16 +0200zfnmxt(~zfnmxt@user/zfnmxt)
2024-04-15 12:18:18 +0200acidjnk(~acidjnk@p200300d6e714dc36e896bc542a6281cf.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2024-04-15 12:20:39 +0200 <lyxia> yes
2024-04-15 12:30:38 +0200SteelBlueSilk(~SteelBlue@user/SteelBlueSilk) (Read error: Connection reset by peer)
2024-04-15 12:33:01 +0200SteelBlueSilk(~SteelBlue@c-98-42-249-36.hsd1.ca.comcast.net)
2024-04-15 12:33:02 +0200SteelBlueSilk(~SteelBlue@c-98-42-249-36.hsd1.ca.comcast.net) (Changing host)
2024-04-15 12:33:02 +0200SteelBlueSilk(~SteelBlue@user/SteelBlueSilk)
2024-04-15 12:40:04 +0200cfricke(~cfricke@user/cfricke)
2024-04-15 12:40:30 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2024-04-15 12:41:04 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2024-04-15 13:00:20 +0200zetef(~quassel@5.2.182.99) (Ping timeout: 268 seconds)
2024-04-15 13:00:40 +0200danse-nr3(~danse-nr3@151.43.234.51)
2024-04-15 13:01:51 +0200Core5214(~rosco@2001:240:242c:d62d:8006:d50:9606:4eb4) (Read error: Connection reset by peer)
2024-04-15 13:02:05 +0200rosco(~rosco@aq052236.dynamic.ppp.asahi-net.or.jp)
2024-04-15 13:02:23 +0200haocrcmt^(~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 264 seconds)
2024-04-15 13:02:34 +0200danse-nr3(~danse-nr3@151.43.234.51) (Remote host closed the connection)
2024-04-15 13:02:59 +0200danse-nr3(~danse-nr3@151.43.234.51)
2024-04-15 13:03:05 +0200haocrcmt^(~cd@c-98-242-74-66.hsd1.ga.comcast.net)
2024-04-15 13:03:52 +0200Core6846(~rosco@aq052236.dynamic.ppp.asahi-net.or.jp)
2024-04-15 13:04:01 +0200rosco(~rosco@aq052236.dynamic.ppp.asahi-net.or.jp) (Read error: Connection reset by peer)
2024-04-15 13:14:42 +0200causal(~eric@50.35.88.207) (Quit: WeeChat 4.1.1)
2024-04-15 13:36:38 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-04-15 13:37:00 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-04-15 13:42:05 +0200igemnace(~ian@user/igemnace) (Quit: WeeChat 4.2.2)
2024-04-15 13:49:44 +0200sroso(~sroso@user/SrOso) (Quit: Leaving :))
2024-04-15 13:52:16 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-04-15 14:03:43 +0200euphores(~SASL_euph@user/euphores)
2024-04-15 14:08:02 +0200igemnace(~ian@user/igemnace)
2024-04-15 14:09:49 +0200anon8697(~anon1123@catv-176-63-0-119.catv.fixed.vodafone.hu) (Quit: ZNC 1.8.2 - https://znc.in)
2024-04-15 14:10:45 +0200anon1123(~anon1123@2a02:ab88:282:b00:da3a:ddff:fe3a:947c)
2024-04-15 14:10:53 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 240 seconds)
2024-04-15 14:13:32 +0200qqq(~qqq@92.43.167.61) (Remote host closed the connection)
2024-04-15 14:15:47 +0200random-jellyfish(~developer@user/random-jellyfish) (Ping timeout: 256 seconds)
2024-04-15 14:19:46 +0200Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Ping timeout: 246 seconds)
2024-04-15 14:20:29 +0200qqq(~qqq@92.43.167.61)
2024-04-15 14:20:56 +0200random-jellyfish(~developer@user/random-jellyfish)
2024-04-15 14:23:24 +0200chele_(~chele@user/chele)
2024-04-15 14:24:14 +0200chele(~chele@user/chele) (Read error: Connection reset by peer)
2024-04-15 14:25:00 +0200Nixkernal(~Nixkernal@240.17.194.178.dynamic.wline.res.cust.swisscom.ch) (Ping timeout: 252 seconds)
2024-04-15 14:26:10 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2024-04-15 14:26:40 +0200ec(~ec@gateway/tor-sasl/ec)
2024-04-15 14:27:41 +0200tv(~tv@user/tv) (Quit: derp)
2024-04-15 14:28:14 +0200tv(~tv@user/tv)
2024-04-15 14:31:04 +0200r5c4571lh01987(rscastilho@179.221.142.8)
2024-04-15 14:31:51 +0200r5c4571lh01987(rscastilho@179.221.142.8) (Remote host closed the connection)
2024-04-15 14:32:09 +0200Nixkernal(~Nixkernal@240.17.194.178.dynamic.wline.res.cust.swisscom.ch)
2024-04-15 14:41:24 +0200qqq(~qqq@92.43.167.61) (Remote host closed the connection)
2024-04-15 14:41:24 +0200tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 255 seconds)
2024-04-15 14:48:29 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-04-15 14:48:36 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-04-15 14:50:47 +0200Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2024-04-15 14:54:27 +0200qqq(~qqq@92.43.167.61)
2024-04-15 14:55:17 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-04-15 14:56:00 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-04-15 14:59:04 +0200PiDelport(uid25146@id-25146.lymington.irccloud.com)
2024-04-15 15:04:32 +0200n8n(n8n@user/n8n)
2024-04-15 15:16:42 +0200tri(~tri@ool-18bbef1a.static.optonline.net)
2024-04-15 15:17:54 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.2.2)
2024-04-15 15:18:36 +0200picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.2.1)
2024-04-15 15:20:00 +0200picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur)
2024-04-15 15:20:53 +0200tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 240 seconds)
2024-04-15 15:27:44 +0200She(haveident@libera/staff/she/her)
2024-04-15 15:28:26 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-04-15 15:30:02 +0200 <Inst> EvanR: Haskell is essentially a scripting language, isn't it? :)
2024-04-15 15:30:05 +0200 <Inst> That's what purity amounts to
2024-04-15 15:30:27 +0200 <Inst> The pure part of your program is essentially a high-performance library that's called by the impure part of your program
2024-04-15 15:30:36 +0200 <Inst> for data calculation
2024-04-15 15:30:42 +0200 <Inst> and the impure part is essentially a Python ;)
2024-04-15 15:35:09 +0200 <EvanR> a useful difference from other languages is your whole program is pure
2024-04-15 15:35:29 +0200tri(~tri@ool-18bbef1a.static.optonline.net)
2024-04-15 15:36:35 +0200 <Inst> "technically"
2024-04-15 15:37:10 +0200 <Inst> since all the statements are essentially quoted
2024-04-15 15:37:35 +0200 <Inst> but yeah, massive state reduction is actually good for scripting
2024-04-15 15:38:03 +0200tri(~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection)
2024-04-15 15:39:07 +0200qqq(~qqq@92.43.167.61) (Remote host closed the connection)
2024-04-15 15:39:42 +0200masaeedu(~masaeedu@user/masaeedu) (Read error: Connection reset by peer)
2024-04-15 15:40:30 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2024-04-15 15:42:21 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-04-15 15:42:51 +0200rvalue(~rvalue@user/rvalue)
2024-04-15 15:45:51 +0200masaeedu(~masaeedu@user/masaeedu)
2024-04-15 15:45:51 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-04-15 15:46:15 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-04-15 15:50:33 +0200qqq(~qqq@92.43.167.61)
2024-04-15 15:53:28 +0200 <EvanR> quotation is a thing when you do template haskell
2024-04-15 15:54:03 +0200 <EvanR> speaking of code instead of using code
2024-04-15 15:58:15 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2024-04-15 16:00:19 +0200euleritian(~euleritia@dynamic-176-004-212-165.176.4.pool.telefonica.de)
2024-04-15 16:00:49 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85)
2024-04-15 16:01:04 +0200dcoutts(~duncan@cpc69400-oxfd27-2-0-cust750.4-3.cable.virginm.net) (Ping timeout: 260 seconds)
2024-04-15 16:01:20 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-04-15 16:04:21 +0200 <Inst> I mean in the sense that the IO type functions analogously to quotation in Lisps
2024-04-15 16:04:55 +0200 <Inst> I'm still stunned by the fact that if you, in an impure language, call a function with statements as arguments, the statements run first
2024-04-15 16:05:09 +0200 <Inst> and I've heard the effectfulness of the statements is actually UB when more than one statement is used
2024-04-15 16:05:37 +0200 <EvanR> no
2024-04-15 16:06:11 +0200 <Inst> at least in C
2024-04-15 16:06:18 +0200 <Inst> order of statement execution isn't specified
2024-04-15 16:06:19 +0200Instgiggles
2024-04-15 16:07:00 +0200 <EvanR> IO isn't like quotation, since you don't have access to syntax at any point
2024-04-15 16:07:59 +0200 <Inst> i mean IO wraps primitives that trigger effects, and the design of it with a 0 bit RealWorld# token controls the sequencing of effects
2024-04-15 16:08:06 +0200 <EvanR> in C do the statements "run first?" If it contains subexpressions they need to be evaluated which could cause side effects
2024-04-15 16:09:02 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85) (Read error: Connection reset by peer)
2024-04-15 16:09:02 +0200 <Inst> contain 0 or more, technically, since, well, pure :)
2024-04-15 16:12:58 +0200 <Inst> btw sm: I have the sort working, but it's ugly, it's based on corrupting a template file somewhere with two sort('lastUpload')s ;_;
2024-04-15 16:14:24 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85)
2024-04-15 16:15:33 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85) (Read error: Connection reset by peer)
2024-04-15 16:18:18 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 252 seconds)
2024-04-15 16:19:29 +0200tri(~tri@ool-18bbef1a.static.optonline.net)
2024-04-15 16:22:09 +0200Arsen(arsen@gentoo/developer/managarm.dev.Arsen) (Quit: Quit.)
2024-04-15 16:23:54 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85)
2024-04-15 16:24:00 +0200tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 255 seconds)
2024-04-15 16:27:28 +0200igemnace(~ian@user/igemnace) (Read error: Connection reset by peer)
2024-04-15 16:28:00 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net)
2024-04-15 16:28:02 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85) (Read error: Connection reset by peer)
2024-04-15 16:30:34 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85)
2024-04-15 16:36:06 +0200AlexNoo_AlexNoo
2024-04-15 16:36:07 +0200 <glguy> Order of execution in C is partially defined. All the function arguments evaluate before the function is called, for example. But it's perhaps less defined than you'd guess https://en.cppreference.com/w/c/language/eval_order
2024-04-15 16:37:23 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85) (Read error: Connection reset by peer)
2024-04-15 16:39:44 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85)
2024-04-15 16:40:17 +0200CrunchyFlakes_(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Quit: ZNC 1.8.2 - https://znc.in)
2024-04-15 16:44:16 +0200billchenchina(~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
2024-04-15 16:45:06 +0200igemnace(~ian@user/igemnace)
2024-04-15 16:45:52 +0200random-jellyfish(~developer@user/random-jellyfish) (Ping timeout: 260 seconds)
2024-04-15 16:48:04 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85) (Read error: Connection reset by peer)
2024-04-15 16:49:08 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85)
2024-04-15 16:50:28 +0200dcompoze(~dcompoze@dcsoftware.org)
2024-04-15 16:52:10 +0200dcompoze(~dcompoze@dcsoftware.org) (Client Quit)
2024-04-15 16:55:50 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-04-15 16:56:26 +0200Arsen(~arsen@gentoo/developer/managarm.dev.Arsen)
2024-04-15 16:58:26 +0200dcompoze(~dcompoze@dcsoftware.org)
2024-04-15 16:58:36 +0200dcompoze(~dcompoze@dcsoftware.org) (Client Quit)
2024-04-15 17:00:39 +0200danse-nr3(~danse-nr3@151.43.234.51) (Ping timeout: 252 seconds)
2024-04-15 17:00:42 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
2024-04-15 17:00:52 +0200danse-nr3(~danse-nr3@151.57.231.212)
2024-04-15 17:01:42 +0200igemnace(~ian@user/igemnace) (Quit: WeeChat 4.2.2)
2024-04-15 17:05:15 +0200JeremyB99(~JeremyB99@2607:fb90:d3e2:41ab:d1ec:83b3:f5ca:bc85) (Ping timeout: 260 seconds)
2024-04-15 17:08:07 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-04-15 17:12:20 +0200mei(~mei@user/mei) (Remote host closed the connection)
2024-04-15 17:14:44 +0200mei(~mei@user/mei)
2024-04-15 17:17:13 +0200tri(~tri@ool-18bbef1a.static.optonline.net)
2024-04-15 17:18:12 +0200zetef(~quassel@5.2.182.99)
2024-04-15 17:18:17 +0200Arsen(~arsen@gentoo/developer/managarm.dev.Arsen) (Quit: Quit.)
2024-04-15 17:18:29 +0200Arsen(~arsen@gentoo/developer/managarm.dev.Arsen)
2024-04-15 17:18:42 +0200random-jellyfish(~developer@user/random-jellyfish)
2024-04-15 17:19:05 +0200euleritian(~euleritia@dynamic-176-004-212-165.176.4.pool.telefonica.de) (Read error: Connection reset by peer)
2024-04-15 17:19:25 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-04-15 17:22:07 +0200tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 268 seconds)
2024-04-15 17:23:12 +0200JeremyB99(~JeremyB99@2607:fb90:2c60:c178:6804:dd74:ec24:3be4)
2024-04-15 17:27:39 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
2024-04-15 17:30:13 +0200Lycurgus(~juan@user/Lycurgus)
2024-04-15 17:32:12 +0200 <Lycurgus> order of execution is always well defined
2024-04-15 17:32:32 +0200random-jellyfish(~developer@user/random-jellyfish) (Remote host closed the connection)
2024-04-15 17:32:43 +0200 <Lycurgus> in ordinary programming languages like c
2024-04-15 17:32:48 +0200 <Lycurgus> and haskell
2024-04-15 17:32:50 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-04-15 17:32:50 +0200random-jellyfish(~developer@user/random-jellyfish)
2024-04-15 17:33:04 +0200 <Lycurgus> ordinary generic
2024-04-15 17:33:24 +0200 <Lycurgus> a purpose built lang or dsl could decide ofc
2024-04-15 17:33:41 +0200 <Lycurgus> otherwise the programmer does
2024-04-15 17:34:26 +0200 <Lycurgus> in the non generic case the order is irrelevant
2024-04-15 17:34:29 +0200JeremyB99(~JeremyB99@2607:fb90:2c60:c178:6804:dd74:ec24:3be4) (Ping timeout: 240 seconds)
2024-04-15 17:35:03 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-04-15 17:36:49 +0200 <c_wraith> I'm not sure what you mean by "well-defined" there.
2024-04-15 17:36:54 +0200 <Lycurgus> would apply locally in cases like the procedure division of cobol, or calcs in rpg
2024-04-15 17:37:24 +0200 <Lycurgus> unless ofc the lang itself isn
2024-04-15 17:37:32 +0200 <c_wraith> are you including "unspecified" as part of defined?
2024-04-15 17:37:34 +0200 <Lycurgus> which would be odd
2024-04-15 17:38:11 +0200JeremyB99(~JeremyB99@2607:fb91:7c5:4d04:6cf3:f0f9:5199:7b3)
2024-04-15 17:38:17 +0200JeremyB99(~JeremyB99@2607:fb91:7c5:4d04:6cf3:f0f9:5199:7b3) (Read error: Connection reset by peer)
2024-04-15 17:38:25 +0200 <Lycurgus> c_wraith, no, why would i do that? have you observed me to talk like that wo explanation?
2024-04-15 17:38:58 +0200 <Lycurgus> in statement oriented langs
2024-04-15 17:39:09 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-04-15 17:39:17 +0200 <c_wraith> well, because I'm trying to match what you're saying to how C works. foo(bar(), baz()) does not specify whether bar() or baz() is called first in C. either order is valid.
2024-04-15 17:39:41 +0200 <Lycurgus> the order is implicitly the programmers specified serial execution plus any task constructs
2024-04-15 17:40:02 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-04-15 17:40:24 +0200 <Lycurgus> ofc it does
2024-04-15 17:40:49 +0200 <Lycurgus> in whatever constructs spec it occurs
2024-04-15 17:41:00 +0200 <Lycurgus> per whatever level C11, etc
2024-04-15 17:41:12 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2024-04-15 17:41:25 +0200 <Lycurgus> back to K&R
2024-04-15 17:43:18 +0200 <Lycurgus> saw this on the log and felt compelled to public service. You're Welcome!
2024-04-15 17:43:21 +0200 <c_wraith> check glguy's link above.
2024-04-15 17:43:23 +0200 <jle`> it looks like according to the C spec, the compiler is allowed to decide which one gets called first, and so if the programmer wants control, they have to explicitly sequence it
2024-04-15 17:43:34 +0200 <jle`> https://en.cppreference.com/w/c/language/eval_order
2024-04-15 17:43:38 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Lycurgus)
2024-04-15 17:43:45 +0200 <jle`> oh they quit
2024-04-15 17:43:59 +0200 <c_wraith> and that's the same link glguy provided above
2024-04-15 17:44:26 +0200 <jle`> ah yeah i saw they joined after the think was posted, but then i realized that they read it through the logs
2024-04-15 17:44:30 +0200 <jle`> quite a mystery
2024-04-15 17:45:22 +0200 <jle`> also reading through the link it just occurred to me that it's kind of wierd that version 99 came out before version 11
2024-04-15 17:45:27 +0200random-jellyfish(~developer@user/random-jellyfish) (Ping timeout: 256 seconds)
2024-04-15 17:45:46 +0200 <c_wraith> I always found that lack of ordering in C to be really inconvenient for things like recursive-descent parsers.
2024-04-15 17:46:11 +0200 <c_wraith> Lots of mandatory naming of subexpressions to control order of evaluation.
2024-04-15 17:49:15 +0200JeremyB99(~JeremyB99@2607:fb91:7c5:4d04:6cf3:f0f9:5199:7b3)
2024-04-15 17:49:24 +0200JeremyB99(~JeremyB99@2607:fb91:7c5:4d04:6cf3:f0f9:5199:7b3) (Read error: Connection reset by peer)
2024-04-15 17:49:47 +0200Lycurgus(~juan@user/Lycurgus)
2024-04-15 17:49:53 +0200 <Lycurgus> so
2024-04-15 17:50:20 +0200 <Lycurgus> the fact the spec allows the compiler to decide when the programmer doesn ... ?
2024-04-15 17:50:29 +0200 <Lycurgus> ???
2024-04-15 17:52:11 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
2024-04-15 17:52:32 +0200euleritian(~euleritia@dynamic-176-004-212-165.176.4.pool.telefonica.de)
2024-04-15 17:53:16 +0200 <Lycurgus> take ur time, i'll respond if it's called for; this is kinda an important point
2024-04-15 17:53:39 +0200Lycurgus(~juan@user/Lycurgus) (Client Quit)
2024-04-15 17:57:40 +0200alexherbo2(~alexherbo@2a02-8440-3140-0274-8942-7e1a-ff10-b141.rev.sfr.net)
2024-04-15 17:58:16 +0200 <jle`> that's pretty much the definition of "undefined behavior" in the context of progamming languages, though. the compiler is allowed to decide instead of the spec. in ie multithreaded situations it could very well be nondeterministic
2024-04-15 17:58:27 +0200remedan(~remedan@ip-78-102-118-253.bb.vodafone.cz) (Quit: Bye!)
2024-04-15 17:58:29 +0200dcompoze(~dcompoze@dcsoftware.org)
2024-04-15 17:59:34 +0200 <jle`> although i don't mean to conflate undefined behavior with nondeterministic behavior
2024-04-15 18:00:09 +0200noumenon(~noumenon@113.51-175-156.customer.lyse.net)
2024-04-15 18:01:21 +0200 <jle`> but my main point is that order of evaluation in this situation is classified as "undefined" within the standard terminology when talking about programming languages
2024-04-15 18:01:44 +0200Lycurgus(~juan@user/Lycurgus)
2024-04-15 18:01:45 +0200acidjnk(~acidjnk@p200300d6e714dc36e896bc542a6281cf.dip0.t-ipconnect.de)
2024-04-15 18:02:03 +0200tzh(~tzh@c-73-164-206-160.hsd1.or.comcast.net)
2024-04-15 18:02:49 +0200 <Lycurgus> ok, this thread had an origin I don't want to be associated with or seem to have encouraged but I do think my point is clear and well made and ofc public
2024-04-15 18:03:40 +0200 <Lycurgus> the last comment is in the class of those I won't respond to but I will continue to see if one is warranted
2024-04-15 18:04:27 +0200 <Lycurgus> bbl
2024-04-15 18:04:51 +0200Lycurgus(~juan@user/Lycurgus) (Client Quit)
2024-04-15 18:05:32 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9)
2024-04-15 18:05:44 +0200 <janus> what's with this bloated language... urgh
2024-04-15 18:06:08 +0200danse-nr3(~danse-nr3@151.57.231.212) (Ping timeout: 260 seconds)
2024-04-15 18:06:26 +0200 <janus> jle`: i applaud you for trying, i would have given up already
2024-04-15 18:07:49 +0200Square2(~Square4@user/square)
2024-04-15 18:07:56 +0200segfaultfizzbuzz(~segfaultf@12.172.217.142)
2024-04-15 18:08:21 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9) (Read error: Connection reset by peer)
2024-04-15 18:08:34 +0200 <segfaultfizzbuzz> says someone on the internet: "people coming from a functional programming background mention higher kinded types as a better alternative to macros in some cases" -- ??
2024-04-15 18:10:38 +0200ft(~ft@p4fc2a20e.dip0.t-ipconnect.de)
2024-04-15 18:11:18 +0200remedan(~remedan@ip-78-102-118-253.bb.vodafone.cz)
2024-04-15 18:13:02 +0200foul_owl(~kerry@185.219.141.162) (Read error: Connection reset by peer)
2024-04-15 18:14:41 +0200 <nitrix> Macros usually are in the form of a preprocessing step that operates on lexical tokens.
2024-04-15 18:15:27 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9)
2024-04-15 18:15:48 +0200 <nitrix> It's mediocre at best when you need a separate language in your language just to do meta things that, well, most of the time are just to express very general things that the existing type system cannot make generic enough.
2024-04-15 18:16:29 +0200swistak(~swistak@185.21.216.141) (Ping timeout: 240 seconds)
2024-04-15 18:17:10 +0200tri(~tri@ool-18bbef1a.static.optonline.net)
2024-04-15 18:17:24 +0200 <nitrix> Haskell isn't completely absolved from the issue, it still has Template Haskell as its own DSL for meta programming, but you don't use it nearly as much as, say, C macros, because the type system is already quite competent.
2024-04-15 18:18:04 +0200swistak(~swistak@185.21.216.141)
2024-04-15 18:19:35 +0200 <nitrix> Kinds lets you have specific type signatures be manipulated at the type level. Just like you can have higher-order functions on values, you can have higher-order functions on types.
2024-04-15 18:20:31 +0200 <Inst> about the only thing macros can do that functions can't is codewalk, which makes me cry every day :(
2024-04-15 18:20:39 +0200 <Inst> then again, even in languages with good codewalking, the macros can be ugly :(
2024-04-15 18:21:17 +0200tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 240 seconds)
2024-04-15 18:21:46 +0200 <Inst> I went to Julia to get a taste of macros, since Julia seems to be alive and reasonably vibrant (everyone's fighting to be Rust's little sister) compared to CLisp, but apparently codewalking with Julia macros is painful
2024-04-15 18:23:29 +0200 <EvanR> I feel like Lycurgus could be vindicated maybe by saying regardless of specs, every implementation of C any of us ever used has some well defined but perhaps unknown ordering
2024-04-15 18:23:29 +0200 <nitrix> Even the ultimate macro language, Lisp, it's miserable having to quote/quasiquote. It's like programming inside of a string and having to escape all the sensitive characters constantly.
2024-04-15 18:24:16 +0200 <segfaultfizzbuzz> i am playing with rust macros for the first time right now
2024-04-15 18:24:31 +0200 <segfaultfizzbuzz> and am debating about whether i should be writing repetitious boilerplate or writing mostly in macros
2024-04-15 18:24:37 +0200Lycurgus(~juan@user/Lycurgus)
2024-04-15 18:24:46 +0200 <nitrix> Rust macros are interesting because they've given types to the lexical tokens so the errors are less. Still annoying though.
2024-04-15 18:24:56 +0200 <Lycurgus> a vindicator! I am so charmed.
2024-04-15 18:25:05 +0200 <segfaultfizzbuzz> writing quote! {} with no compiler help is kinda scary tho
2024-04-15 18:25:14 +0200 <EvanR> are you logging out and lurking logs only? lol
2024-04-15 18:25:46 +0200 <ski> type synonyms are kinda macros, at the type level. from this perspective, `LiberalTypeSynonyms' allow higher-order type macros
2024-04-15 18:26:12 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 260 seconds)
2024-04-15 18:26:26 +0200 <nitrix> I think it'd only be higher-order if it's at least the form * -> *
2024-04-15 18:26:33 +0200 <ski> (also CLisp is a particular implementation of Common Lisp)
2024-04-15 18:26:45 +0200 <Lycurgus> EvanR, after this if there's a comment to be made in this thread i'll do it tommorow
2024-04-15 18:27:37 +0200 <ski> well, `ApInt Id', given `type Id a = a; type ApInt f = f Int', would be an example. here `ApInt' has kind `(* -> *) -> *', yea
2024-04-15 18:27:37 +0200 <Lycurgus> at one level 'the programmers specified order' is simplicity itself but there's a lot to unpack in this actual thread and the matter of C and its specs
2024-04-15 18:27:54 +0200 <masaeedu> EvanR: unfortunately if the cppreference page is to be believed, not even this is true
2024-04-15 18:27:56 +0200 <Lycurgus> i apologize if articulate english is a problem
2024-04-15 18:29:16 +0200 <Lycurgus> so i take it that when a spec says that behaviour is undefined that is informing you in natural language abouit the definition of the language
2024-04-15 18:29:31 +0200 <Lycurgus> *about
2024-04-15 18:30:16 +0200 <Lycurgus> also the class of langs is important and i've delimited them
2024-04-15 18:31:30 +0200mei(~mei@user/mei) (Remote host closed the connection)
2024-04-15 18:31:35 +0200foul_owl(~kerry@185.219.141.164)
2024-04-15 18:31:37 +0200 <Lycurgus> in some general purpose langs, prolog being the main one that comes to mind, the actual order specified by the programmer is not ofc like in C
2024-04-15 18:33:53 +0200mei(~mei@user/mei)
2024-04-15 18:34:09 +0200 <Lycurgus> 'well defined' and 'perhaps unkown' for an ordering are antithetical opposites and so ofc i'm not saying that for any correct C implementation
2024-04-15 18:34:41 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2024-04-15 18:35:51 +0200 <Lycurgus> *unknown
2024-04-15 18:36:19 +0200Square2(~Square4@user/square) (Ping timeout: 246 seconds)
2024-04-15 18:38:02 +0200 <Lycurgus> in pl u got ur socalled flow of satisfaction which serves the same purpose, seeya tommorrow
2024-04-15 18:38:10 +0200dcompoze(~dcompoze@dcsoftware.org) (Quit: Weechat 4.2.2)
2024-04-15 18:38:20 +0200dcompoze(~dcompoze@dcsoftware.org)
2024-04-15 18:38:29 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Lycurgus)
2024-04-15 18:38:46 +0200 <nitrix> This isn't quite the place for that but C has sequence points. Not everything is guaranteed to happen in the specified order.
2024-04-15 18:40:15 +0200alexherbo2(~alexherbo@2a02-8440-3140-0274-8942-7e1a-ff10-b141.rev.sfr.net) (Remote host closed the connection)
2024-04-15 18:40:36 +0200alexherbo2(~alexherbo@2a02-8440-3140-0274-8942-7e1a-ff10-b141.rev.sfr.net)
2024-04-15 18:40:55 +0200 <nitrix> Instructions can be re-ordered as long as it's semantically not observable, similar to Haskell's purity + lazy evaluation combo, but as a general rule for optimizations.
2024-04-15 18:43:22 +0200 <nitrix> Excluding optimizations and sequence points, the leftover has undefined behavior. e.g. i++ + ++i.
2024-04-15 18:49:51 +0200tri(~tri@ool-18bbef1a.static.optonline.net)
2024-04-15 18:51:15 +0200billchenchina(~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Quit: Leaving)
2024-04-15 18:51:53 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9) (Read error: Connection reset by peer)
2024-04-15 18:54:53 +0200tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 272 seconds)
2024-04-15 18:55:11 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9)
2024-04-15 18:55:21 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2024-04-15 18:55:25 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-04-15 18:55:48 +0200ec(~ec@gateway/tor-sasl/ec)
2024-04-15 18:56:39 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-04-15 18:57:30 +0200rvalue(~rvalue@user/rvalue)
2024-04-15 18:58:47 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9) (Read error: Connection reset by peer)
2024-04-15 19:02:08 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2024-04-15 19:04:04 +0200alexherbo2(~alexherbo@2a02-8440-3140-0274-8942-7e1a-ff10-b141.rev.sfr.net) (Remote host closed the connection)
2024-04-15 19:04:22 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9)
2024-04-15 19:05:44 +0200dcompoze(~dcompoze@dcsoftware.org) (Quit: Weechat 4.2.2)
2024-04-15 19:05:45 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9) (Read error: Connection reset by peer)
2024-04-15 19:06:38 +0200zetef(~quassel@5.2.182.99) (Ping timeout: 268 seconds)
2024-04-15 19:11:09 +0200dcoutts(~duncan@cpc69400-oxfd27-2-0-cust750.4-3.cable.virginm.net)
2024-04-15 19:13:32 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-04-15 19:15:24 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9)
2024-04-15 19:16:08 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9) (Read error: Connection reset by peer)
2024-04-15 19:22:11 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 264 seconds)
2024-04-15 19:23:06 +0200Square(~Square@user/square)
2024-04-15 19:23:58 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-04-15 19:28:06 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9)
2024-04-15 19:33:28 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-04-15 19:34:33 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-04-15 19:44:07 +0200tri(~tri@ool-18bbef1a.static.optonline.net)
2024-04-15 19:45:51 +0200philopsos(~caecilius@user/philopsos)
2024-04-15 19:45:57 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9) (Read error: Connection reset by peer)
2024-04-15 19:51:02 +0200zetef(~quassel@5.2.182.99)
2024-04-15 19:51:13 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9)
2024-04-15 19:53:12 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9) (Read error: Connection reset by peer)
2024-04-15 19:55:08 +0200mei(~mei@user/mei) (Remote host closed the connection)
2024-04-15 19:57:33 +0200mei(~mei@user/mei)
2024-04-15 20:03:24 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9)
2024-04-15 20:05:27 +0200 <monochrom> Although, I am not sure why evaluation order ruins recursive descent parsing, even in C. In Haskell, recursive descent parsing is done monadically or at least applicatively, >>= and <*> become the equivalent of programmer-specified sequence points; this is no better than in C.
2024-04-15 20:08:17 +0200 <dolio> I suppose depending on exactly how it looks, certain C expressions do not have a defined sequencing. So you can write an ill-defined parser in that respect.
2024-04-15 20:08:29 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 240 seconds)
2024-04-15 20:08:30 +0200 <monochrom> So I guess s/I am not sure why evaluation order ruins recursive descent parsing, even in C/I am not sure why you would expect evaluation order to not ruin recursive descent parsing, even in Haskell/
2024-04-15 20:08:31 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9) (Read error: Connection reset by peer)
2024-04-15 20:09:52 +0200 <dolio> When you nest all the monad combinators, it all has a well-defined sequence according the parser.
2024-04-15 20:11:05 +0200 <dolio> The C case would be like using algebraic effects to write things direct style, but then the algebraic effects stuff telling you that `f (g x) (h y)` has no defined sequencing between the effects of `g` and `h`.
2024-04-15 20:11:23 +0200 <monochrom> Yeah but exactly what I was addressing. In Haskell, such a parser goes like "do { e1 <- subexpr; op <- operator; e2 <- subexpr; pure f(e1, op, e2) }". Even in Haskell you would not write it as "f(subexpr(), operator(), subexpr())". So I would not expect anyone to write like that in C.
2024-04-15 20:11:41 +0200segfaultfizzbuzz(~segfaultf@12.172.217.142) (Ping timeout: 240 seconds)
2024-04-15 20:13:44 +0200 <dolio> Algebraic effect systems generally don't do that, from what I've seen.
2024-04-15 20:13:46 +0200segfaultfizzbuzz(~segfaultf@12.172.217.142)
2024-04-15 20:13:50 +0200 <dolio> I.E. C sucks. :)
2024-04-15 20:14:57 +0200 <monochrom> Ugh I didn't expect algebraic effects and C to appear together in the same sentence like that haha.
2024-04-15 20:16:19 +0200 <monochrom> And perhaps s/evaluation order/effect order/g for much better diction.
2024-04-15 20:16:47 +0200 <dolio> I mean, there are other examples, too.
2024-04-15 20:16:59 +0200 <dolio> Racket tells you what order arguments are evaluated.
2024-04-15 20:17:41 +0200 <dolio> C is probably the odd one at this point.
2024-04-15 20:21:11 +0200 <mauke> what was that article that described C as being based on a formal mathematical concept, the monoid?
2024-04-15 20:21:32 +0200 <dolio> Because the syntax is text?
2024-04-15 20:21:35 +0200 <mauke> yeah
2024-04-15 20:21:43 +0200 <c_wraith> monochrom: usually I write parsers in an applicative style. Sure, the operators count as sequence points, but they do it without me being required to invent names for their results.
2024-04-15 20:21:44 +0200 <monochrom> I bet the original undocumented intention had just two orders in mind and the committee couldn't agree to ban either one.
2024-04-15 20:22:14 +0200 <dolio> Yeah, should be right-to-left, right? :)
2024-04-15 20:22:16 +0200 <mauke> it had something like, "C refers to strings as char * using a notation borrowed from Kleene"
2024-04-15 20:22:30 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9)
2024-04-15 20:22:51 +0200 <c_wraith> I told my friend about this, and she dug up her (paper!) copy of the C99 spec, and was like "yep, it says 'shall'". Which is the C99 way of saying "any program that doesn't do this is out of spec".
2024-04-15 20:23:12 +0200yeitrafferin(~user@2a04:4540:720f:f000:1c8b:86e5:bfad:3ed4) (Remote host closed the connection)
2024-04-15 20:24:29 +0200 <c_wraith> The C99 spec is remarkably circuitous about undefined behavior. It rarely says anything is. It just describes what valid programs do, and leaves it up to you to infer what it thinks of programs that do otherwise.
2024-04-15 20:24:30 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9) (Read error: Connection reset by peer)
2024-04-15 20:24:48 +0200 <mauke> most C programs have undefined behavior :-)
2024-04-15 20:24:56 +0200 <c_wraith> I'm pretty sure that's "all"
2024-04-15 20:25:00 +0200 <mauke> the standard just characterizes the exceptional cases that don't
2024-04-15 20:25:23 +0200 <monochrom> And then perhaps languages after C saw the annoyance and decided to not follow, leaving C as the oddity in hindsight.
2024-04-15 20:25:47 +0200 <dolio> Is `f(g(x), h(x))` undefined? Or is only the sequencing undefined?
2024-04-15 20:25:55 +0200 <Franciman> mauke: most haskell programs too
2024-04-15 20:25:59 +0200 <mauke> sequencing is unspecified*
2024-04-15 20:26:01 +0200 <Franciman> since there is no formal semantics
2024-04-15 20:26:10 +0200 <c_wraith> dolio: it's undefined if g(x) and h(x) mutate the same object.
2024-04-15 20:26:17 +0200 <dolio> Okay.
2024-04-15 20:26:18 +0200 <mauke> c_wraith: no
2024-04-15 20:26:25 +0200 <mauke> function calls don't overlap
2024-04-15 20:26:45 +0200 <mauke> either g executes first, or h
2024-04-15 20:26:51 +0200 <c_wraith> mauke: "If a side effect on a scalar object is unsequenced relative to either a different side effect on the
2024-04-15 20:26:51 +0200 <c_wraith> same scalar object or a value computation using the value of the same scalar object, the behavior
2024-04-15 20:26:51 +0200 <c_wraith> is undefined."
2024-04-15 20:26:56 +0200 <c_wraith> whoops. newlines made it in.
2024-04-15 20:27:19 +0200 <mauke> yes, but function bodies/calls are sequenced to each other
2024-04-15 20:27:57 +0200 <mauke> actually, I should check whether there is a sequence point between different arguments
2024-04-15 20:28:12 +0200 <c_wraith> I mean, the lack of sequence points there was the whole point of my complaint....
2024-04-15 20:28:39 +0200 <mauke> IIRC there is a sequence point before each function call
2024-04-15 20:28:49 +0200 <mauke> or maybe in each function call, before the body is entered
2024-04-15 20:29:27 +0200anon1123(~anon1123@2a02:ab88:282:b00:da3a:ddff:fe3a:947c) (Quit: ZNC 1.8.2 - https://znc.in)
2024-04-15 20:30:45 +0200anon1123(~anon1123@catv-176-63-0-119.catv.fixed.vodafone.hu)
2024-04-15 20:30:55 +0200 <monochrom> I give students assignments like that too. I just write like "the input is a positive odd number n, the output is 3*n". I am not going to bother to add explicitly "unspecified behaviour for other inputs", eh. At most I add, just for FAQ purposes, "I only test with positive odd numbers".
2024-04-15 20:31:51 +0200 <c_wraith> She then dug up the same portion of the C2x draft, and was like "hey, this actually explicitly lists when it's undefined behavior, instead of just describing defined behavior"
2024-04-15 20:32:14 +0200haskellbridge(~haskellbr@69.135.3.34)
2024-04-15 20:32:14 +0200ChanServ+v haskellbridge
2024-04-15 20:32:38 +0200 <geekosaur> aaaand we're back
2024-04-15 20:32:39 +0200 <mauke> ok, there is no sequence point between arguments, but "There is a sequence point after the evaluations of the function designator and the actual arguments but before the actual call."
2024-04-15 20:33:04 +0200 <mauke> (C17, 6.5.2.2/10)
2024-04-15 20:33:42 +0200sammelweis(~quassel@96.76.243.253) (Read error: Connection reset by peer)
2024-04-15 20:33:52 +0200sammelweis(~quassel@96.76.243.253)
2024-04-15 20:34:28 +0200 <mauke> so: int x; void f(int x, int y) {} int main(void) { f(x = 1, x = 2); } // undefined behavior
2024-04-15 20:34:40 +0200 <c_wraith> man, it's a lot to wrap my head around sequence points being both syntactic and temporal.
2024-04-15 20:35:08 +0200 <mauke> but: int x; void g(void) { x = 1; } void h(void) { x = 2; } void f(int x, int y) {} int main(void) { f(g(), h()); } // fine
2024-04-15 20:37:30 +0200Core6846(~rosco@aq052236.dynamic.ppp.asahi-net.or.jp) (Remote host closed the connection)
2024-04-15 20:37:35 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-04-15 20:37:46 +0200rosco(~rosco@aq052236.dynamic.ppp.asahi-net.or.jp)
2024-04-15 20:37:55 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9)
2024-04-15 20:38:38 +0200JeremyB99(~JeremyB99@2607:fb91:1062:10b3:b1f8:d4ff:4235:d3a9) (Read error: Connection reset by peer)
2024-04-15 20:38:45 +0200 <c_wraith> oddly, that quote leaves it possible for there to be UB if the function designator might be changed by evaluating arguments. And I guess you could make that happen with function pointers. I hope no one has ever encountered that specific UB.
2024-04-15 20:39:11 +0200 <monochrom> hahaha how did I not think of that
2024-04-15 20:39:30 +0200 <mauke> yes, also a[i](i++); and similar
2024-04-15 20:39:38 +0200 <dolio> You'd have to be doing some really evil stuff.
2024-04-15 20:39:53 +0200 <c_wraith> mauke: thanks for the clarification.
2024-04-15 20:41:02 +0200 <mauke> also, { int i = 0; return i; } technically has undefined behavior because there is no sequence point between the write and read of i :-)
2024-04-15 20:41:19 +0200 <monochrom> "implementing algebraic effects in C: monads for free in C" https://www.microsoft.com/en-us/research/wp-content/uploads/2017/06/algeff-in-c-tr-v2.pdf
2024-04-15 20:41:21 +0200 <c_wraith> ... yikes.
2024-04-15 20:41:34 +0200 <glguy> Also C++ and C have different evaluation orders
2024-04-15 20:41:43 +0200 <mauke> which I'm pretty sure is a either bug in the standard or me reading it wrong
2024-04-15 20:42:02 +0200 <glguy> In C++17: In a function-call expression, the expression that names the function is sequenced before every argument expression and every default argument.
2024-04-15 20:42:18 +0200 <c_wraith> I was under the impression a semicolon was always intended to be a sequence point. But possibly the spec misseed a case.
2024-04-15 20:42:29 +0200 <mauke> intended, yes
2024-04-15 20:42:47 +0200 <glguy> 4) There is a sequence point after the evaluation of a full expression (an expression that is not a subexpression: typically something that ends with a semicolon
2024-04-15 20:43:00 +0200 <mauke> right. "full expression" is the crucial thing
2024-04-15 20:43:11 +0200 <mauke> because normally = is an operator and thus part of the expression
2024-04-15 20:43:32 +0200 <mauke> but with initializers = is part of the initialization syntax and not part of the expression
2024-04-15 20:43:40 +0200 <glguy> 5) There is a sequence point at the end of a full declarator.
2024-04-15 20:43:49 +0200 <mauke> the declarator is 0
2024-04-15 20:44:09 +0200 <glguy> the initializer is 0, the declarator is int i
2024-04-15 20:44:15 +0200 <mauke> oops
2024-04-15 20:44:25 +0200 <mauke> ah, not quite
2024-04-15 20:44:28 +0200 <mauke> the declarator is i
2024-04-15 20:44:42 +0200 <mauke> "declarator" is the name of the pseudo-expression that follows the typey names in declarations
2024-04-15 20:45:10 +0200 <mauke> the idea being that with VLAs you could have something like int a[f()]; IIRC
2024-04-15 20:46:04 +0200 <c_wraith> ... too much astronomy. VL is variable-length, not very large.
2024-04-15 20:46:04 +0200 <mauke> so: we have a sequence point after `i` (which is pointless) and a sequence point after `0` (also pointless), but nothing after the implied write that happens during initialization
2024-04-15 20:47:59 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-04-15 20:48:11 +0200JeremyB99(~JeremyB99@208.64.173.20)
2024-04-15 20:49:13 +0200 <glguy> mauke: the standard does have a paragraph: A statement specifies an action to be performed. Except as indicated, statements are executed in sequence.
2024-04-15 20:49:34 +0200 <mauke> declarations aren't statements (at least not in C99)
2024-04-15 20:52:46 +0200zetef(~quassel@5.2.182.99) (Remote host closed the connection)
2024-04-15 20:54:01 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-04-15 20:59:40 +0200euleritian(~euleritia@dynamic-176-004-212-165.176.4.pool.telefonica.de) (Read error: Connection reset by peer)
2024-04-15 21:00:28 +0200 <glguy> mauke: how about this: https://en.cppreference.com/w/c/language/statements#Compound_statements The initializers of the variables with automatic storage duration declared inside a block and the VLA declarators are executed when flow of control passes over these declarations in order, as if they were statements:
2024-04-15 21:00:52 +0200 <glguy> I still need to tie that back to the standard document, but I think we're closer
2024-04-15 21:01:06 +0200tessier(~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Remote host closed the connection)
2024-04-15 21:02:10 +0200 <mauke> yes, that's part of the problem
2024-04-15 21:02:29 +0200 <mauke> variable initializers are executed like statements, but without the sequence point at the end that comes with normal statements
2024-04-15 21:02:53 +0200 <glguy> If they were executed "as if they were statements" then that gets us back to statements being sequenced
2024-04-15 21:03:30 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-04-15 21:06:04 +0200 <glguy> mauke: The following are full expressions: an initializer that is not part of a compound literal (6.7.9); ...
2024-04-15 21:06:32 +0200tessier(~treed@ec2-184-72-149-67.compute-1.amazonaws.com)
2024-04-15 21:07:00 +0200 <mauke> that's the 0
2024-04-15 21:07:44 +0200 <glguy> OK, so you're saying that the assignment of that expression's value to i is not sufficiently sequenced
2024-04-15 21:08:11 +0200 <mauke> yes
2024-04-15 21:08:24 +0200peterbecich(~Thunderbi@47.229.123.186)
2024-04-15 21:08:56 +0200 <glguy> I don't think initializers are considered assignment in the same way that actual assignment statements are
2024-04-15 21:09:06 +0200 <glguy> it's not being assigned to i, it's the initial value of it
2024-04-15 21:09:38 +0200 <mauke> that part is weird, too
2024-04-15 21:10:04 +0200 <mauke> because for automatic variables, storage is reserved when their block is entered
2024-04-15 21:10:24 +0200 <mauke> but IIRC their value stays indeterminate until execution reaches the initialization
2024-04-15 21:14:11 +0200mechap(~mechap@user/mechap) (Quit: WeeChat 4.2.2)
2024-04-15 21:15:03 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-04-15 21:18:27 +0200 <EvanR> masaeedu, yeah I figured
2024-04-15 21:18:41 +0200 <EvanR> modulo "implementations that any of us have used"
2024-04-15 21:19:09 +0200 <EvanR> holy crap so much C rabbit holing
2024-04-15 21:20:20 +0200qhong(~qhong@DN160vrd000d6kpg009l6c0000fj.stanford.edu)
2024-04-15 21:20:31 +0200 <c_wraith> this is how I know anyone who says "C is simple" doesn't know C
2024-04-15 21:22:19 +0200woffs(3cd46299b2@woffs.de) ()
2024-04-15 21:22:37 +0200target_i(~target_i@user/target-i/x-6023099)
2024-04-15 21:24:23 +0200 <EvanR> moral, more or less self consistent C as gradually dreamed up while taking university courses "is simple" xD
2024-04-15 21:25:05 +0200segfaultfizzbuzz(~segfaultf@12.172.217.142) (Ping timeout: 268 seconds)
2024-04-15 21:26:04 +0200 <mauke> fun C fact: all keywords at the start of a declaration can be permuted arbitrarily; their order doesn't matter
2024-04-15 21:26:58 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2024-04-15 21:27:23 +0200ec(~ec@gateway/tor-sasl/ec)
2024-04-15 21:27:40 +0200 <mauke> so why declare a `const unsigned long int` when you can also declare an `int unsigned const long`?
2024-04-15 21:31:47 +0200peterbecich(~Thunderbi@47.229.123.186) (Ping timeout: 264 seconds)
2024-04-15 21:31:57 +0200xdminsy(~xdminsy@117.147.70.203) (Ping timeout: 272 seconds)
2024-04-15 21:35:26 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2024-04-15 21:36:45 +0200 <EvanR> what in the world
2024-04-15 21:37:15 +0200 <EvanR> int long unsigned const
2024-04-15 21:38:25 +0200 <geekosaur> a C of keywords
2024-04-15 21:39:07 +0200 <janus> but that can't be since 'const int*' is not the same as 'int const *'
2024-04-15 21:39:58 +0200 <ncf> it is; but that's not the same as int * const
2024-04-15 21:40:00 +0200 <EvanR> * being technically not a keyword
2024-04-15 21:40:01 +0200 <masaeedu> the closest i've come to having a systematic way of parsing c declarations is the spiral rule
2024-04-15 21:40:25 +0200 <masaeedu> but apparently even that only works in happy circumstances
2024-04-15 21:41:02 +0200 <janus> ok so i can only swap keywords if i don't go past a *?
2024-04-15 21:41:54 +0200 <EvanR> this one weird trick your coworkers will hate
2024-04-15 21:42:30 +0200 <meejah> const int * is a different type than int * const
2024-04-15 21:42:48 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-04-15 21:42:56 +0200 <meejah> IIRC ... been a while ;)
2024-04-15 21:42:57 +0200 <masaeedu> however happy a circumstance one might consider `void (*signal(int, void (*fp)(int)))(int);` to be
2024-04-15 21:43:24 +0200euleritian(~euleritia@dynamic-176-004-212-165.176.4.pool.telefonica.de)
2024-04-15 21:43:41 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-04-15 21:49:12 +0200 <dolio> Is `int * const` the one where the pointer is constant?
2024-04-15 21:50:14 +0200 <tomsmeding> dolio: correct
2024-04-15 21:54:06 +0200 <dolio> I guess it probably wouldn't be surprising if people who say, "C is simple," have never actually written a C program. :)
2024-04-15 21:54:12 +0200 <dolio> Like, a well defined one.
2024-04-15 21:55:03 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-04-15 21:56:23 +0200 <janus> if you consider that almost every other language boils down to C its RTS or such, isn't C simpler then? i mean, to understand the GHC RTS you need to know both haskell and C
2024-04-15 21:56:56 +0200segfaultfizzbuzz(~segfaultf@12.172.217.142)
2024-04-15 21:57:20 +0200 <geekosaur> only if you need to understand the details of its implementation. if it provides a well defined API and hides the C RTS API, you need only understand the exported API
2024-04-15 21:57:26 +0200 <geekosaur> (at least until you start doing FFI)
2024-04-15 21:58:18 +0200 <sprout> janus: you don't need to understand C, you need to understand a Von Neumann architecture
2024-04-15 21:58:44 +0200 <sprout> and the most popular manner of programming against a Von Neumann architecture is C
2024-04-15 21:58:51 +0200 <dolio> It wouldn't be surprising if every RTS is not a C program. :)
2024-04-15 21:58:56 +0200 <janus> sprout: i need the VonNeumann understanding to understand the K&R book? or do debug a PDP-11? or to debug the GHC RTS?
2024-04-15 21:59:10 +0200 <janus> i can see why someone who read the K&R book would say C is simple
2024-04-15 21:59:19 +0200 <meejah> dolio: yeah, one is "the pointer is const" and the other is "the thing pointed at is const"
2024-04-15 21:59:28 +0200 <janus> if they are confronted with Visual Studio.NET and a commercial codebase right after :P
2024-04-15 21:59:38 +0200 <janus> and that probably happened to a lot of colleague graduates :P
2024-04-15 21:59:43 +0200 <sprout> you need to understand the essentials of the machine your working on
2024-04-15 21:59:47 +0200 <dolio> meejah: Yeah, I knew that. The trick is remembering which is which.
2024-04-15 21:59:51 +0200 <sprout> well, some people do
2024-04-15 21:59:53 +0200 <janus> microcode, that seems pretty essential
2024-04-15 22:00:00 +0200 <janus> good thing everybody understands that
2024-04-15 22:00:00 +0200 <meejah> dolio: indeed, many such "tricks" in C/C++ ;)
2024-04-15 22:00:02 +0200 <janus> NOT :D
2024-04-15 22:00:30 +0200 <meejah> you can also like "const int * const" approximately.
2024-04-15 22:00:59 +0200 <sprout> I don't think you can understand C without having some grasp of the machine your programming
2024-04-15 22:01:16 +0200 <dolio> mauke: Actually, are C programs a monoid? Probably not. You can't just concatenate two C programs and get a C program.
2024-04-15 22:01:24 +0200 <janus> it all boils down to the fact that C can mean a billion things
2024-04-15 22:01:49 +0200 <janus> and it changes every few decades, new standards come out
2024-04-15 22:02:13 +0200 <meejah> yeah .. and most "C" now is really like "C, but built by a C++ compiler" so certainly C++-isms sneak in
2024-04-15 22:03:16 +0200infinity0(~infinity0@pwned.gg) (Remote host closed the connection)
2024-04-15 22:04:28 +0200systemfault(sid267009@about/typescript/member/systemfault) (Remote host closed the connection)
2024-04-15 22:04:40 +0200systemfault(sid267009@about/typescript/member/systemfault)
2024-04-15 22:05:20 +0200euphores(~SASL_euph@user/euphores)
2024-04-15 22:06:56 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
2024-04-15 22:10:20 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2024-04-15 22:10:20 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2024-04-15 22:10:51 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2024-04-15 22:11:02 +0200infinity0(~infinity0@pwned.gg)
2024-04-15 22:11:10 +0200gmg(~user@user/gehmehgeh)
2024-04-15 22:12:57 +0200infinity0(~infinity0@pwned.gg) (Remote host closed the connection)
2024-04-15 22:14:03 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-04-15 22:14:22 +0200Shires(~Shires@user/shires)
2024-04-15 22:15:03 +0200infinity0(~infinity0@pwned.gg)
2024-04-15 22:15:22 +0200Shires(~Shires@user/shires) ()
2024-04-15 22:21:28 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2024-04-15 22:28:54 +0200segfaultfizzbuzz(~segfaultf@12.172.217.142) (Ping timeout: 268 seconds)
2024-04-15 22:29:14 +0200noumenon(~noumenon@113.51-175-156.customer.lyse.net) (Read error: Connection reset by peer)
2024-04-15 22:39:47 +0200roboguy_(~roboguy_@2605:a601:ac42:2600:fc17:bce5:59ef:6c46)
2024-04-15 22:42:42 +0200segfaultfizzbuzz(~segfaultf@12.172.217.142)
2024-04-15 22:47:32 +0200Vajb(~Vajb@85-76-14-24-nat.elisa-mobile.fi)
2024-04-15 22:54:51 +0200segfaultfizzbuzz(~segfaultf@12.172.217.142) (Ping timeout: 256 seconds)
2024-04-15 22:55:48 +0200roboguy_(~roboguy_@2605:a601:ac42:2600:fc17:bce5:59ef:6c46) (Quit: Leaving...)
2024-04-15 22:56:10 +0200alexherbo2(~alexherbo@2a02-8440-3141-2665-793a-5dc9-a564-c4a6.rev.sfr.net)
2024-04-15 22:56:46 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-04-15 22:56:48 +0200 <monochrom> The von Neumann model is pretty easy to understand, and most people already understand it, even presume it, without knowing the name.
2024-04-15 22:57:28 +0200 <monochrom> The same way successful merchants deeply understand "higher demand = higher price" without knowing that it has an academic name too.
2024-04-15 22:58:56 +0200 <monochrom> To read K&R (for example) you do need to not presume the lambda calculus, for example.
2024-04-15 22:59:20 +0200 <sprout> the point is that you don't really need to understand C except for as a device to instruct a Von Neumann machine
2024-04-15 22:59:26 +0200 <sprout> it's isn't about C
2024-04-15 22:59:39 +0200 <sprout> could've been Ada just as well
2024-04-15 23:01:50 +0200 <sprout> janus made the point that for understanding GHC you'ld need to understand C
2024-04-15 23:01:53 +0200 <sprout> not really
2024-04-15 23:02:06 +0200 <sprout> you need to be aware of what the machine roughly does
2024-04-15 23:02:10 +0200 <monochrom> I think that was already addressed.
2024-04-15 23:02:20 +0200sproutshuts up
2024-04-15 23:05:50 +0200qqq(~qqq@92.43.167.61) (Quit: Lost terminal)
2024-04-15 23:06:11 +0200tri(~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection)
2024-04-15 23:13:17 +0200madeleine-sydney(~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
2024-04-15 23:14:32 +0200qqq(~qqq@92.43.167.61)
2024-04-15 23:15:18 +0200JeremyB99(~JeremyB99@208.64.173.20) (Ping timeout: 255 seconds)
2024-04-15 23:16:17 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-04-15 23:19:35 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-04-15 23:21:37 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 255 seconds)
2024-04-15 23:29:18 +0200michalz(~michalz@185.246.207.215) (Quit: ZNC 1.8.2 - https://znc.in)
2024-04-15 23:31:40 +0200pavonia(~user@user/siracusa)
2024-04-15 23:34:00 +0200target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2024-04-15 23:38:17 +0200JeremyB99(~JeremyB99@208.64.173.20)
2024-04-15 23:46:00 +0200lainon(~lainon@2607:fb90:af24:4a15:91e7:ba33:e025:e099)
2024-04-15 23:52:47 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 264 seconds)
2024-04-15 23:59:49 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)