2024/05/13

2024-05-13 00:00:51 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2024-05-13 00:01:03 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 00:02:13 +0200gmg(~user@user/gehmehgeh)
2024-05-13 00:05:15 +0200yin_(~yin@user/zero) (Ping timeout: 255 seconds)
2024-05-13 00:11:19 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-05-13 00:15:15 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2024-05-13 00:21:04 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich)
2024-05-13 00:21:32 +0200yin_(~yin@user/zero)
2024-05-13 00:21:48 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-13 00:37:04 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-05-13 00:38:05 +0200acidjnk_new(~acidjnk@p200300d6e714dc538d2f4966c160723d.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2024-05-13 00:41:42 +0200yin_(~yin@user/zero) (Ping timeout: 255 seconds)
2024-05-13 00:43:38 +0200yin_(~yin@user/zero)
2024-05-13 00:53:38 +0200target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2024-05-13 00:53:46 +0200yin_zzz
2024-05-13 00:54:20 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2024-05-13 00:54:52 +0200euleritian(~euleritia@dynamic-176-006-176-035.176.6.pool.telefonica.de)
2024-05-13 00:58:21 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
2024-05-13 01:02:23 +0200yin(~yin@user/zero) (Ping timeout: 264 seconds)
2024-05-13 01:05:33 +0200yin(~yin@user/zero)
2024-05-13 01:21:57 +0200phma_(~phma@2001:5b0:211b:f8f8:8558:8264:69ae:a8e6)
2024-05-13 01:22:40 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-05-13 01:24:29 +0200phma(phma@2001:5b0:211f:3048:948d:80d2:e152:3a7b) (Ping timeout: 240 seconds)
2024-05-13 01:26:08 +0200yin(~yin@user/zero) (Ping timeout: 252 seconds)
2024-05-13 01:27:33 +0200yin(~yin@user/zero)
2024-05-13 01:31:57 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 256 seconds)
2024-05-13 01:35:41 +0200yin(~yin@user/zero) (Ping timeout: 240 seconds)
2024-05-13 01:39:09 +0200yin(~yin@user/zero)
2024-05-13 01:44:21 +0200philopsos1(~caecilius@user/philopsos)
2024-05-13 01:52:35 +0200philopsos1(~caecilius@user/philopsos) (Ping timeout: 272 seconds)
2024-05-13 01:58:21 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-13 02:36:24 +0200yin(~yin@user/zero) (Ping timeout: 268 seconds)
2024-05-13 02:39:07 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 260 seconds)
2024-05-13 02:44:12 +0200yin(~yin@user/zero)
2024-05-13 02:45:04 +0200ropwareJB(~ropwareJB@2601:602:9100:1460:c8dc:a946:242d:d890)
2024-05-13 02:48:19 +0200euleritian(~euleritia@dynamic-176-006-176-035.176.6.pool.telefonica.de) (Ping timeout: 256 seconds)
2024-05-13 02:49:03 +0200euleritian(~euleritia@dynamic-176-001-008-241.176.1.pool.telefonica.de)
2024-05-13 02:49:34 +0200 <ropwareJB> Hi folks, need some direction with Nix + GHCJS, I'm receiving the following compile error and not sure how to proceed:
2024-05-13 02:49:35 +0200 <ropwareJB> ```
2024-05-13 02:49:35 +0200 <ropwareJB> building '/nix/store/da6mc29mxdygpy3wz1d3vd7z9j308j3v-entropy-0.4.1.10.drv'...
2024-05-13 02:49:36 +0200 <ropwareJB> Running phase: setupCompilerEnvironmentPhase
2024-05-13 02:49:36 +0200 <ropwareJB> Build with /nix/store/n3aank8ia8qjqyv0lqslbz1bahpyg59s-ghcjs-8.10.7.
2024-05-13 02:49:37 +0200 <ropwareJB> Running phase: unpackPhase
2024-05-13 02:49:37 +0200 <ropwareJB> unpacking source archive /nix/store/sh4n8xmf2ydjgz1qbmr6qr0mzwsv3cxv-entropy-0.4.1.10.tar.gz
2024-05-13 02:49:38 +0200 <ropwareJB> source root is entropy-0.4.1.10
2024-05-13 02:49:38 +0200 <ropwareJB> setting SOURCE_DATE_EPOCH to timestamp 1000000000 of file entropy-0.4.1.10/System/EntropyWindows.hs
2024-05-13 02:49:39 +0200 <ropwareJB> Running phase: patchPhase
2024-05-13 02:49:39 +0200 <ropwareJB> Replace Cabal file with edited version from mirror://hackage/entropy-0.4.1.10/revision/1.cabal.
2024-05-13 02:49:40 +0200 <ropwareJB> Running phase: compileBuildDriverPhase
2024-05-13 02:49:40 +0200 <ropwareJB> setupCompileFlags: -package-db=/build/tmp.S8Sc2uLXHZ/setup-package.conf.d -j8 +RTS -A64M -RTS -threaded -rtsopts
2024-05-13 02:49:41 +0200 <ropwareJB> [1 of 1] Compiling Main ( Setup.hs, /build/tmp.S8Sc2uLXHZ/Main.o )
2024-05-13 02:49:41 +0200 <ropwareJB> Linking Setup ...
2024-05-13 02:49:42 +0200 <ropwareJB> Running phase: updateAutotoolsGnuConfigScriptsPhase
2024-05-13 02:49:42 +0200 <ropwareJB> Running phase: configurePhase
2024-05-13 02:49:43 +0200 <ropwareJB> configureFlags: --verbose --prefix=/nix/store/jq14b9dgm4k5jj134g8lndflxr13m8ib-entropy-0.4.1.10 --libdir=$prefix/lib/$compiler --libsubdir=$abi/$libname --docdir=/nix/store/iy0hyw7lvgvgwz54ag86g04sxxjm01fa-entropy-0.4.1.10-doc/share/doc/entropy-0.4.1.10 --with-gcc=gcc --package-db=/build/tmp.S8Sc2uLXHZ/package.conf.d --ghc-options=-j8 +RTS -A64M
2024-05-13 02:55:14 +0200 <probie> ropwareJB: Use a pastebin like https://paste.tomsmeding.com/ for things which are more than 3-4 lines
2024-05-13 02:59:25 +0200 <johnw> Is there a lens that will do this:
2024-05-13 02:59:31 +0200 <johnw> 123 & something . _head .~ 4 ==> 423
2024-05-13 03:13:39 +0200otto_s(~user@p4ff27bc4.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-05-13 03:14:40 +0200 <glguy> > (123::Int) & _Show . _head .~ '4' --?
2024-05-13 03:14:42 +0200 <lambdabot> <hint>:1:38: error:
2024-05-13 03:14:42 +0200 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2024-05-13 03:14:43 +0200otto_s(~user@p5de2fd19.dip0.t-ipconnect.de)
2024-05-13 03:14:56 +0200 <glguy> > (123::Int) & _Show . _head .~ '4' -- ?
2024-05-13 03:14:57 +0200 <lambdabot> error:
2024-05-13 03:14:57 +0200 <lambdabot> • Couldn't match type ‘[Char]’ with ‘Int’
2024-05-13 03:14:57 +0200 <lambdabot> Expected type: ASetter Int String Char Char
2024-05-13 03:16:18 +0200 <probie> johnw: What do you expect the result of `123 & something . _head .~ 42` to be?
2024-05-13 03:19:44 +0200 <probie> > let something f s = fmap ((read :: String -> Int) . concatMap show) $ f (map digitToInt (show s)) in 123 & something . _head .~ 4
2024-05-13 03:19:46 +0200 <lambdabot> 423
2024-05-13 03:19:59 +0200 <probie> > let something f s = fmap ((read :: String -> Int) . concatMap show) $ f (map digitToInt (show s)) in 123 & something . _head .~ 42
2024-05-13 03:20:00 +0200 <lambdabot> 4223
2024-05-13 03:22:53 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 256 seconds)
2024-05-13 03:40:05 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-13 03:53:12 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2024-05-13 04:05:13 +0200tv(~tv@user/tv) (Quit: derp)
2024-05-13 04:05:37 +0200tv(~tv@user/tv)
2024-05-13 04:07:08 +0200zzz(~yin@user/zero) (Ping timeout: 256 seconds)
2024-05-13 04:08:47 +0200zzz(~yin@user/zero)
2024-05-13 04:15:04 +0200td_(~td@i53870913.versanet.de) (Ping timeout: 268 seconds)
2024-05-13 04:15:44 +0200cyphase(~cyphase@user/cyphase) (Quit: cyphase.com)
2024-05-13 04:16:47 +0200td_(~td@i53870933.versanet.de)
2024-05-13 04:20:21 +0200emmanuelux(~emmanuelu@user/emmanuelux)
2024-05-13 04:21:26 +0200phma_(~phma@2001:5b0:211b:f8f8:8558:8264:69ae:a8e6) (Read error: Connection reset by peer)
2024-05-13 04:22:51 +0200phma_(phma@2001:5b0:210b:c738:d0e0:5870:ec8f:f731)
2024-05-13 04:35:17 +0200euleritian(~euleritia@dynamic-176-001-008-241.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
2024-05-13 04:35:34 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-13 05:00:00 +0200Taneb(~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (Quit: I seem to have stopped.)
2024-05-13 05:01:11 +0200Taneb(~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0)
2024-05-13 05:01:47 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds)
2024-05-13 05:06:46 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2024-05-13 05:08:40 +0200random-jellyfish(~developer@user/random-jellyfish) (Ping timeout: 260 seconds)
2024-05-13 05:14:51 +0200zzz(~yin@user/zero) (Ping timeout: 255 seconds)
2024-05-13 05:18:14 +0200philopsos(~caecilius@user/philopsos) (Ping timeout: 252 seconds)
2024-05-13 05:21:23 +0200random-jellyfish(~developer@user/random-jellyfish)
2024-05-13 05:22:05 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 240 seconds)
2024-05-13 05:23:35 +0200philopsos1(~caecilius@user/philopsos)
2024-05-13 05:37:28 +0200JimL(~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2024-05-13 05:40:22 +0200JimL(~quassel@89.162.16.26)
2024-05-13 05:43:31 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2024-05-13 05:47:16 +0200random-jellyfish(~developer@user/random-jellyfish) (Ping timeout: 255 seconds)
2024-05-13 05:48:47 +0200xigua(~xigua@user/xigua) (Read error: Connection reset by peer)
2024-05-13 05:49:02 +0200xigua(~xigua@user/xigua)
2024-05-13 05:55:09 +0200Square(~Square@user/square) (Ping timeout: 272 seconds)
2024-05-13 05:56:09 +0200aforemny(~aforemny@i59F516F4.versanet.de)
2024-05-13 05:57:27 +0200aforemny_(~aforemny@i59F516F5.versanet.de) (Ping timeout: 260 seconds)
2024-05-13 06:06:03 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net)
2024-05-13 06:06:17 +0200rosco(~rosco@yp-146-6.tm.net.my)
2024-05-13 06:13:43 +0200 <johnw> I think 423
2024-05-13 06:13:55 +0200 <johnw> I want to treat the int like a string, manipulate the string, and then store it back as an int
2024-05-13 06:14:24 +0200 <johnw> the _Show prism is the precise opposite of what I am looking for
2024-05-13 06:14:40 +0200 <johnw> I mean, this is highly suspect, but:
2024-05-13 06:14:40 +0200 <johnw> shown f a = read <$> f (show a)
2024-05-13 06:15:11 +0200 <johnw> this is only valid if you never make modification that cause the number to not be a number anymore
2024-05-13 06:19:31 +0200phma_phma
2024-05-13 06:27:29 +0200ropwareJB(~ropwareJB@2601:602:9100:1460:c8dc:a946:242d:d890) (Quit: Client closed)
2024-05-13 06:35:00 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-05-13 06:35:42 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-13 06:39:27 +0200 <probie> Do you really need a `String`, or would a sign and a list of digits be preferable?
2024-05-13 06:40:45 +0200michalz(~michalz@185.246.207.197)
2024-05-13 06:40:56 +0200sadome(~sadome@182.69.182.31)
2024-05-13 06:40:56 +0200sadome(~sadome@182.69.182.31) (Changing host)
2024-05-13 06:40:56 +0200sadome(~sadome@user/sadome)
2024-05-13 06:40:56 +0200sadome(~sadome@user/sadome) (Excess Flood)
2024-05-13 06:41:30 +0200sadome(~sadome@182.69.182.31)
2024-05-13 06:41:30 +0200sadome(~sadome@182.69.182.31) (Changing host)
2024-05-13 06:41:30 +0200sadome(~sadome@user/sadome)
2024-05-13 06:41:30 +0200sadome(~sadome@user/sadome) (Excess Flood)
2024-05-13 06:42:39 +0200sadome(~sadome@182.69.182.31)
2024-05-13 06:42:39 +0200sadome(~sadome@182.69.182.31) (Changing host)
2024-05-13 06:42:39 +0200sadome(~sadome@user/sadome)
2024-05-13 06:42:39 +0200sadome(~sadome@user/sadome) (Excess Flood)
2024-05-13 06:43:35 +0200sadome(~sadome@user/sadome)
2024-05-13 06:43:35 +0200sadome(~sadome@user/sadome) (Excess Flood)
2024-05-13 06:45:36 +0200michalz(~michalz@185.246.207.197) (Client Quit)
2024-05-13 06:47:10 +0200sadome(~sadome@user/sadome)
2024-05-13 06:47:10 +0200sadome(~sadome@user/sadome) (Excess Flood)
2024-05-13 06:47:51 +0200sadome(~sadome@user/sadome)
2024-05-13 06:47:51 +0200sadome(~sadome@user/sadome) (Excess Flood)
2024-05-13 06:48:28 +0200michalz(~michalz@185.246.207.203)
2024-05-13 06:50:53 +0200xdminsy(~xdminsy@117.147.70.240)
2024-05-13 06:53:57 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2024-05-13 06:55:22 +0200 <sm> @where+ ultimate-string-guide https://hasufell.github.io/posts/2024-05-07-ultimate-string-guide.html
2024-05-13 06:55:22 +0200 <lambdabot> I will never forget.
2024-05-13 06:55:38 +0200 <sm> epic post by maerwald
2024-05-13 07:16:06 +0200mailman(~mailman@192.210.255.34)
2024-05-13 07:16:14 +0200acidjnk_new(~acidjnk@p200300d6e714dc3784e5c6ff7798483a.dip0.t-ipconnect.de)
2024-05-13 07:18:07 +0200mailman(~mailman@192.210.255.34) (Client Quit)
2024-05-13 07:18:57 +0200mailman(~mailman@192.210.255.34)
2024-05-13 07:23:51 +0200ft(~ft@p508db8fc.dip0.t-ipconnect.de) (Quit: leaving)
2024-05-13 07:28:03 +0200mailman(~mailman@192.210.255.34) (Ping timeout: 250 seconds)
2024-05-13 07:34:16 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2024-05-13 07:34:52 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-05-13 07:34:55 +0200euleritian(~euleritia@dynamic-176-001-008-241.176.1.pool.telefonica.de)
2024-05-13 07:38:51 +0200notzmv(~daniel@user/notzmv) (Ping timeout: 255 seconds)
2024-05-13 07:44:45 +0200 <johnw> probie: I actually want a string, so that I can turn it into a Text and use that someplace. It just fits the pattern if it's a lens or traversal. It's OK, though, there are many ways around this problem.
2024-05-13 07:47:09 +0200causal(~eric@50.35.88.207)
2024-05-13 07:50:35 +0200philopsos1(~caecilius@user/philopsos) (Quit: Lost terminal)
2024-05-13 07:51:03 +0200xdminsy(~xdminsy@117.147.70.240) (Quit: Konversation terminated!)
2024-05-13 07:51:27 +0200xdminsy(~xdminsy@117.147.70.240)
2024-05-13 08:01:56 +0200ames(~amelia@offtopia/offtopian/amelia) (Quit: Ping timeout (120 seconds))
2024-05-13 08:02:03 +0200ames4(~amelia@offtopia/offtopian/amelia)
2024-05-13 08:02:41 +0200stefan-__(~m-yh2rcc@42dots.de) (Ping timeout: 252 seconds)
2024-05-13 08:02:55 +0200stefan-__(~m-yh2rcc@42dots.de)
2024-05-13 08:03:43 +0200ames4ames
2024-05-13 08:03:47 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de) (Ping timeout: 252 seconds)
2024-05-13 08:04:10 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de)
2024-05-13 08:04:17 +0200philopsos1(~caecilius@user/philopsos)
2024-05-13 08:07:27 +0200cyphase(~cyphase@user/cyphase)
2024-05-13 08:07:28 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 08:07:44 +0200cyphase(~cyphase@user/cyphase) (Remote host closed the connection)
2024-05-13 08:12:59 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-05-13 08:14:56 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-05-13 08:20:22 +0200Square2(~Square4@user/square)
2024-05-13 08:31:13 +0200 <c_wraith> johnw: it's inherently going to be unlawful, because invalid changes to the string will break it. There's nothing in lens that's allowed to fail in that direction. If you accept that and simply proceed with something like your shown definition, that's as good as you'll get without inventing something new.
2024-05-13 08:36:05 +0200 <c_wraith> there are some unlawful things in lens with failure modes like that, which sort of just... Make something up if their preconditions are violated.
2024-05-13 08:36:12 +0200 <c_wraith> > (1,2,3) & partsOf each %~ tail
2024-05-13 08:36:13 +0200 <lambdabot> (2,3,3)
2024-05-13 08:42:38 +0200cyphase(~cyphase@user/cyphase)
2024-05-13 08:48:43 +0200cyphase(~cyphase@user/cyphase) (Ping timeout: 256 seconds)
2024-05-13 08:48:49 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2024-05-13 08:51:13 +0200hippoid(~hippoid@user/hippoid) (Ping timeout: 272 seconds)
2024-05-13 08:52:50 +0200hippoid(~hippoid@c-98-213-162-40.hsd1.il.comcast.net)
2024-05-13 08:53:56 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 08:54:38 +0200rosco(~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
2024-05-13 08:57:13 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-05-13 08:57:36 +0200euleritian(~euleritia@dynamic-176-001-008-241.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
2024-05-13 08:57:56 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-13 09:01:00 +0200sawilagar(~sawilagar@user/sawilagar)
2024-05-13 09:01:43 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 09:02:22 +0200cfricke(~cfricke@user/cfricke)
2024-05-13 09:17:46 +0200__monty__(~toonn@user/toonn)
2024-05-13 09:24:35 +0200Mach(~Mach@2a02:2f09:d304:200:c99a:4ebf:7882:c432)
2024-05-13 09:26:29 +0200philopsos1(~caecilius@user/philopsos) (Ping timeout: 268 seconds)
2024-05-13 09:30:00 +0200Mach`(~Mach@86.127.202.233)
2024-05-13 09:33:53 +0200Mach(~Mach@2a02:2f09:d304:200:c99a:4ebf:7882:c432) (Ping timeout: 268 seconds)
2024-05-13 09:35:45 +0200syscall1(~syscall@2409:40c1:500a:3a4f:c203:8a4c:1ac4:3af)
2024-05-13 09:37:17 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 252 seconds)
2024-05-13 09:44:17 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2024-05-13 09:45:39 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 260 seconds)
2024-05-13 09:48:12 +0200brox66(~brox66@user/brox66)
2024-05-13 09:49:09 +0200notzmv(~daniel@user/notzmv)
2024-05-13 09:50:05 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2024-05-13 09:52:25 +0200 <brox66> Hello, I want to set up a stack project that uses BNFC to generate some parser code. Is it possible to configure a pre-build hook that calls bnfc's makefile before stack's build starts?
2024-05-13 09:54:06 +0200 <Hecate> it's usually what a Setup.hs helps you with
2024-05-13 09:54:08 +0200 <Hecate> Custom build type
2024-05-13 09:54:25 +0200 <Hecate> brox66: but personally I use a Makefile that calls the two rules one after the other
2024-05-13 10:00:56 +0200cfricke(~cfricke@user/cfricke)
2024-05-13 10:01:33 +0200 <brox66> Thanks! Yes, I'll probably usa a Makefile instead.
2024-05-13 10:14:32 +0200xdminsy(~xdminsy@117.147.70.240) (Read error: Connection reset by peer)
2024-05-13 10:14:38 +0200 <Hecate> brox66: here's an example: https://github.com/flora-pm/flora-server/blob/development/Makefile#L7-L8
2024-05-13 10:15:39 +0200xdminsy(~xdminsy@117.147.70.240)
2024-05-13 10:17:07 +0200chele(~chele@user/chele)
2024-05-13 10:17:20 +0200 <brox66> Hecate, big Makefile!
2024-05-13 10:17:55 +0200m5zs7k(aquares@web10.mydevil.net) (Ping timeout: 246 seconds)
2024-05-13 10:19:07 +0200 <Hecate> brox66: aye
2024-05-13 10:19:13 +0200 <probie> That's a neat low-effort way to do "help"
2024-05-13 10:19:19 +0200m5zs7k(aquares@web10.mydevil.net)
2024-05-13 10:19:39 +0200 <Hecate> yup'
2024-05-13 10:23:23 +0200titibandit(~titibandi@user/titibandit)
2024-05-13 10:29:18 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 10:31:05 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-05-13 10:34:10 +0200syscall1(~syscall@2409:40c1:500a:3a4f:c203:8a4c:1ac4:3af) (Ping timeout: 256 seconds)
2024-05-13 10:35:15 +0200brox66(~brox66@user/brox66) (Ping timeout: 250 seconds)
2024-05-13 10:43:02 +0200danse-nr3(~danse-nr3@151.43.89.126)
2024-05-13 10:45:34 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-13 10:51:11 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 11:07:46 +0200gehmehgeh(~user@user/gehmehgeh)
2024-05-13 11:07:54 +0200rosco(~rosco@yp-146-6.tm.net.my)
2024-05-13 11:34:31 +0200robosexual(~spaceoyst@5.167.241.127)
2024-05-13 11:44:39 +0200random-jellyfish(~developer@2a02:2f04:11e:c600:4127:3bc6:8e36:8fc3)
2024-05-13 11:44:39 +0200random-jellyfish(~developer@2a02:2f04:11e:c600:4127:3bc6:8e36:8fc3) (Changing host)
2024-05-13 11:44:39 +0200random-jellyfish(~developer@user/random-jellyfish)
2024-05-13 11:44:39 +0200tremon(~tremon@83.80.159.219)
2024-05-13 11:47:19 +0200cyphase(~cyphase@user/cyphase)
2024-05-13 11:49:38 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 12:01:48 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 12:02:12 +0200acidjnk_new(~acidjnk@p200300d6e714dc3784e5c6ff7798483a.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2024-05-13 12:21:03 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 260 seconds)
2024-05-13 12:30:25 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-05-13 12:30:39 +0200syscall1(~syscall@2409:40c1:500a:3a4f:edc2:acd4:e500:7824)
2024-05-13 12:32:21 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-05-13 12:32:25 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2024-05-13 12:34:08 +0200Mach`(~Mach@86.127.202.233) (Quit: Leaving)
2024-05-13 12:36:01 +0200gehmehgeh(~user@user/gehmehgeh)
2024-05-13 12:38:57 +0200euphores(~SASL_euph@user/euphores)
2024-05-13 12:41:28 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-05-13 12:41:48 +0200danse-nr3(~danse-nr3@151.43.89.126) (Ping timeout: 260 seconds)
2024-05-13 12:52:52 +0200 <ncf> johnw: there isn't a lawful way to do this with lens, because you could modify the String to something that doesn't parse back as an Int. here's something i did a few days ago as a joke: https://ircbrowse.tomsmeding.com/day/lchaskell/2024/04/30?id=1266594#trid1266594
2024-05-13 12:53:38 +0200 <ncf> treats the _Show prism as a partial Iso and turns it around
2024-05-13 12:53:46 +0200acidjnk_new(~acidjnk@p200300d6e714dc37b9c7c34e6fbc03d6.dip0.t-ipconnect.de)
2024-05-13 12:54:06 +0200rosco(~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
2024-05-13 12:56:49 +0200 <ncf> > 123 & fromP' _Show . _head .~ '4'
2024-05-13 12:56:51 +0200 <lambdabot> 423
2024-05-13 12:57:34 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 12:58:47 +0200 <Taneb> Nice
2024-05-13 12:59:04 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2024-05-13 13:00:35 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
2024-05-13 13:01:59 +0200Lord_of_Life_Lord_of_Life
2024-05-13 13:08:46 +0200 <ncf> maybe you could achieve something like this lawfully in a dependently typed language, with dependent lenses (https://www.cse.chalmers.se/~nad/publications/danielsson-dependent-lenses.pdf)
2024-05-13 13:09:29 +0200 <ncf> approximating Int as a subtype of String
2024-05-13 13:09:49 +0200 <ncf> Σ (s : String) "s parses as an Int"
2024-05-13 13:10:54 +0200hammond(proscan@gateway02.insomnia247.nl) (Remote host closed the connection)
2024-05-13 13:16:38 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2024-05-13 13:17:27 +0200ec(~ec@gateway/tor-sasl/ec)
2024-05-13 13:19:10 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 264 seconds)
2024-05-13 13:19:37 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
2024-05-13 13:19:43 +0200syscall1(~syscall@2409:40c1:500a:3a4f:edc2:acd4:e500:7824) (Ping timeout: 256 seconds)
2024-05-13 13:24:31 +0200rvalue(~rvalue@user/rvalue) (Ping timeout: 268 seconds)
2024-05-13 13:24:40 +0200gehmehgehgmg
2024-05-13 13:29:58 +0200 <[exa]> dmj`: re the MicroHs, I've got a tiny assembly graph reducing machine here and it looks like it could evaluate the combinators just as well. Which would be great because the footprint of microhs would basically lose the C compiler requirement, and there are a few other funny ways to make it portable
2024-05-13 13:30:17 +0200 <[exa]> like, I'll try to do that in free time over the summer. Guess will post it here in case anything materializes
2024-05-13 13:39:51 +0200syscall1(~syscall@2409:40c1:500a:3a4f:1bf3:ed53:e9f:88f4)
2024-05-13 13:39:55 +0200 <kuribas> ncf: IsJust (readMaybe s : Maybe Int)
2024-05-13 13:40:44 +0200 <kuribas> Or (s ** IsJust (readMaybe s : Maybe Int))
2024-05-13 13:41:14 +0200 <kuribas> But then why not just use Int?
2024-05-13 13:41:31 +0200 <ncf> what's ** ?
2024-05-13 13:42:48 +0200 <ncf> the point is to have a dependent lens that lets you modify the first component of the sigma type that is "isomorphic" to Int
2024-05-13 13:43:02 +0200 <ncf> i don't think you can do this in haskell
2024-05-13 13:44:00 +0200 <kuribas> ncf: idris dependent pair operator
2024-05-13 13:44:09 +0200 <ncf> oh, so that's what i wrote then
2024-05-13 13:44:48 +0200 <kuribas> But a string that is "isomorphic" to Int is not very useful.
2024-05-13 13:44:52 +0200 <kuribas> Just use Int then.
2024-05-13 13:45:54 +0200 <ncf> sure, the type is not very interesting on its own, it's just part of the definition of the lens
2024-05-13 13:46:12 +0200 <ncf> just like a regular Lens a b is some type c with an isomorphism a ≃ b × c
2024-05-13 13:46:37 +0200rvalue(~rvalue@user/rvalue)
2024-05-13 13:47:07 +0200 <ncf> (https://www.twanvl.nl/blog/haskell/isomorphism-lenses)
2024-05-13 13:49:23 +0200Miroboru(~myrvoll@178-164-114.82.3p.ntebredband.no)
2024-05-13 13:49:23 +0200danse-nr3(~danse-nr3@an-19-162-214.service.infuturo.it)
2024-05-13 13:51:10 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 13:54:03 +0200 <ncf> hmm this is probably not what dependent lenses actually achieve though
2024-05-13 13:54:10 +0200danse-nr3(~danse-nr3@an-19-162-214.service.infuturo.it) (Ping timeout: 255 seconds)
2024-05-13 13:54:32 +0200danse-nr3(~danse-nr3@an-19-162-214.service.infuturo.it)
2024-05-13 13:57:54 +0200 <syscall1> LIST
2024-05-13 13:58:09 +0200syscall1(~syscall@2409:40c1:500a:3a4f:1bf3:ed53:e9f:88f4) (Quit: WeeChat 4.2.2)
2024-05-13 13:59:31 +0200 <int-e> . o O ( back to the BASICs )
2024-05-13 14:04:05 +0200 <ncf> like, in order to set (f : String → String) over the first component of Σ (s : String) P(s) you'd have to also provide a proof that P(s) → P(f(s))... but then you're not gaining anything from the lens interface
2024-05-13 14:05:22 +0200 <ncf> and then if you wanted to somehow compose that with _head then that would turn into P(s) → P(over _head f s)
2024-05-13 14:06:03 +0200billchenchina(~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
2024-05-13 14:06:55 +0200billchenchina(~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Max SendQ exceeded)
2024-05-13 14:07:19 +0200billchenchina(~billchenc@103.152.35.21)
2024-05-13 14:07:20 +0200drdo(~drdo@bl5-29-74.dsl.telepac.pt)
2024-05-13 14:10:23 +0200yin(~yin@user/zero) (Remote host closed the connection)
2024-05-13 14:29:15 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 255 seconds)
2024-05-13 14:32:52 +0200sandbag(~syscall@user/sandbag)
2024-05-13 14:38:52 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 14:39:26 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 14:52:21 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2024-05-13 15:02:31 +0200 <dmj`> [exa]: very cool, which assembly language
2024-05-13 15:05:52 +0200zzz(~yin@user/zero)
2024-05-13 15:07:23 +0200danse-nr3(~danse-nr3@an-19-162-214.service.infuturo.it) (Ping timeout: 256 seconds)
2024-05-13 15:07:52 +0200danse-nr3(~danse-nr3@an-19-162-214.service.infuturo.it)
2024-05-13 15:22:11 +0200danse-nr3(~danse-nr3@an-19-162-214.service.infuturo.it) (Ping timeout: 264 seconds)
2024-05-13 15:22:29 +0200_bo(~bo@198.red-83-56-252.dynamicip.rima-tde.net)
2024-05-13 15:23:21 +0200 <zzz> is this parenthesized correctly? https://i.stack.imgur.com/WQtuk.jpg
2024-05-13 15:25:42 +0200 <ski> not if that's supposed to be a Y combinator, assuming usual precedence rules for application and lambda abstraction
2024-05-13 15:27:12 +0200 <mauke> depends on what conventions you use
2024-05-13 15:27:45 +0200 <int-e> apparently they use \x.(...) for a lambda abstraction and it binds stronger than application
2024-05-13 15:28:13 +0200 <int-e> hmm, no
2024-05-13 15:28:26 +0200 <int-e> hmm, yes.
2024-05-13 15:28:26 +0200 <mauke> if your lambda calculus uses BlockArguments, then it is "wrong"
2024-05-13 15:29:30 +0200 <int-e> you can verify that if you replace each \x.( by (\x. then things make sense with a Haskell-like convention.
2024-05-13 15:29:33 +0200 <mauke> if your lambda calculus uses layout rules for lambda bodies, then it is "right", I think
2024-05-13 15:29:54 +0200 <mauke> in that a parse error will implicitly terminate the block
2024-05-13 15:31:06 +0200 <tomsmeding> % \f -> f 10 \x -> x + 1
2024-05-13 15:31:06 +0200 <yahb2> <interactive>:65:12: error: ; Unexpected lambda expression in function application: ; \ x -> x + 1 ; You could write it with parentheses ; Or perhaps you meant to enable BlockAr...
2024-05-13 15:31:11 +0200 <tomsmeding> mauke: are you sure?
2024-05-13 15:31:23 +0200 <mauke> pretty sure
2024-05-13 15:31:34 +0200 <tomsmeding> I thought GHC used layout rules :p
2024-05-13 15:31:44 +0200 <mauke> no, lambda doesn't layout in Haskell
2024-05-13 15:32:16 +0200 <tomsmeding> what does? let?
2024-05-13 15:32:25 +0200 <tomsmeding> % let f x = x + 1 in f let y = 17 in y
2024-05-13 15:32:25 +0200 <yahb2> <interactive>:67:22: error: ; Unexpected let expression in function application: ; let y = 17 in y ; You could write it with parentheses ; Or perhaps you meant to enable BlockAr...
2024-05-13 15:32:44 +0200 <mauke> I have code that is essentially: fmap (\x -> set _1 x proto) xs
2024-05-13 15:32:48 +0200 <ski> `let',`where',`do'
2024-05-13 15:33:07 +0200 <mauke> is there a way to write this as one lens expression, without the lambda/fmap?
2024-05-13 15:34:01 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 272 seconds)
2024-05-13 15:35:04 +0200 <ski> (well, `of',`\case',`\cases' too)
2024-05-13 15:35:58 +0200 <zzz> hot take: lenses are an antipattern
2024-05-13 15:36:25 +0200 <mauke> (or alternatively: fmap (\x -> proto & _1 .~ x) xs)
2024-05-13 15:36:52 +0200 <mauke> which you could @pl in the usual way, but that's just horrible
2024-05-13 15:38:37 +0200 <ski> @type (?proto & _1 .~)
2024-05-13 15:38:38 +0200 <lambdabot> error:
2024-05-13 15:38:38 +0200 <lambdabot> The operator ‘.~’ [infixr 4] of a section
2024-05-13 15:38:38 +0200 <lambdabot> must have lower precedence than that of the operand,
2024-05-13 15:39:14 +0200 <tomsmeding> cute use of implicit params
2024-05-13 15:39:18 +0200 <mauke> :t (?proto &) . (_1 .~)
2024-05-13 15:39:19 +0200 <lambdabot> (?proto::s, Field1 s c a b) => b -> c
2024-05-13 15:39:38 +0200 <ski> (imho, `(2 + 3 *)' ought to be a section for `\x -> 2 + 3 * x')
2024-05-13 15:40:02 +0200 <tomsmeding> meh, it's ambiguous whether that would be (2 + 3) * _ or 2 + (3 * _)
2024-05-13 15:40:07 +0200 <tomsmeding> it's probably better disallowed
2024-05-13 15:40:33 +0200 <mauke> proto is actually a 5-tuple
2024-05-13 15:40:39 +0200 <ski> it's as ambiguous as `2 + 3 * x' meaning either `(2 + 3) * x' or `2 + (3 * x)'
2024-05-13 15:40:59 +0200 <tomsmeding> no, because that's a syntactically valid arithmetic expression where the normal precedence rules apply
2024-05-13 15:41:33 +0200 <ski> (i have many times written `(f . g .)', only to have to change that to `((f . g) .)' alt. `(f .) . (g .)')
2024-05-13 15:41:34 +0200 <tomsmeding> for (2 + 3 *), do the precedence rules take, well, precedence (yielding 2 + (3 * _)), or does the fact that it's a section take precedence (yielding (2 + 3) * _)?
2024-05-13 15:41:41 +0200 <tomsmeding> where in the precedence hierarchy is "taking a section"?
2024-05-13 15:41:51 +0200 <tomsmeding> and does everyone agree on where it is
2024-05-13 15:41:59 +0200 <ski> "do the precedence rules take" -- yes, which would be the point
2024-05-13 15:42:41 +0200 <tomsmeding> I would personally expect the normal section behaviour to take precedence, i.e. my second option
2024-05-13 15:42:48 +0200 <tomsmeding> so our intuitions don't agree
2024-05-13 15:42:50 +0200 <ski> same precedence rules as usual, just the circumstances in which they can be applied has been extended (as opposed to interpreting it as `((2 + 3) *)', which would just be weird)
2024-05-13 15:43:06 +0200 <tomsmeding> I think that's a good reason to require this to be explicitly written down how you want it to be
2024-05-13 15:43:30 +0200 <ski> `*' binds tigher than `+', there's no reason, if allowing `(2 + 3 *)', to sidestep that
2024-05-13 15:43:48 +0200 <tomsmeding> there is -- this is special syntax for a section, which is (E op)
2024-05-13 15:43:54 +0200 <mauke> ski: how would you write that rule in a grammar?
2024-05-13 15:44:09 +0200 <tomsmeding> what would the grammar for E be, indeed
2024-05-13 15:44:28 +0200 <tomsmeding> my intuition would say that E should just be a top-level expression; this yields (2 + 3) * _
2024-05-13 15:44:48 +0200 <ski> mauke : parenthesized sequence of atomic expressions, interleaved by operators, optional operator at start, and at end
2024-05-13 15:44:49 +0200sandbag(~syscall@user/sandbag) (Ping timeout: 268 seconds)
2024-05-13 15:45:08 +0200 <tomsmeding> or rather, if we are to generalise E beyond the current definition, which is an expression at precedence level as expected on the LHS of 'op'
2024-05-13 15:45:15 +0200 <mauke> can I get that in BNF?
2024-05-13 15:45:25 +0200 <tomsmeding> ski: that's a lexing grammar, not a parsing grammar
2024-05-13 15:45:27 +0200 <tomsmeding> :p
2024-05-13 15:45:32 +0200 <ski> (then taking precedence and associativity into account in a later pass. or, if you prefer hardcoding that into the grammar, that should be doable)
2024-05-13 15:45:37 +0200 <tomsmeding> right
2024-05-13 15:45:47 +0200 <tomsmeding> I mean, GHC already does precedence and associativity in a later pass anyway
2024-05-13 15:45:57 +0200 <tomsmeding> but as a human I prefer to pretend that it doesn't
2024-05-13 15:46:12 +0200 <tomsmeding> baking the fact that it does into the syntax that the human needs to process fields weird to me
2024-05-13 15:46:31 +0200 <ski> well, it's either that, or generating grammar rules at run-time, or something like that
2024-05-13 15:46:56 +0200 <tomsmeding> my brain prefers to generate grammar rules at compile time, 'infix{,l,r}' statements being the way to do so
2024-05-13 15:48:43 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2024-05-13 15:48:49 +0200ystael(~ystael@user/ystael)
2024-05-13 15:48:52 +0200 <ski> > let f x y z = x * y * z where (*) = (-); infixr 6 * in f 2 3 4
2024-05-13 15:48:53 +0200 <lambdabot> 3
2024-05-13 15:49:26 +0200euleritian(~euleritia@dynamic-176-003-078-122.176.3.pool.telefonica.de)
2024-05-13 15:49:56 +0200 <tomsmeding> define an operator (*) with level 6, right-associative; then parse f as usual
2024-05-13 15:50:23 +0200 <tomsmeding> I don't think about this as "parse a token sequence for f, then reinterpret that token sequence using the infixr statement found later"
2024-05-13 15:50:32 +0200 <ski> mauke : anyway, another way to do it in a grammar, is to use Definite Clause Grammar, with ordered logic, using implicational grammar categories
2024-05-13 15:50:36 +0200 <tomsmeding> even though realistically a parser will have to do something like that
2024-05-13 15:50:42 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-13 15:50:52 +0200syscall1(~syscall@2401:4900:16a3:3e97:3b3e:7956:62a8:2bba)
2024-05-13 15:51:11 +0200 <ski> (there are papers about doing this, for intuitionistic, resp. linear (rather than ordered) logic, in order to capture "island constraints" in "coordination" in natural language)
2024-05-13 15:52:31 +0200dezaaltor(~dezaaltor@77-254-94-95.dynamic.inetia.pl)
2024-05-13 15:52:34 +0200syscall1(~syscall@2401:4900:16a3:3e97:3b3e:7956:62a8:2bba) (Client Quit)
2024-05-13 15:52:49 +0200dezaaltor(~dezaaltor@77-254-94-95.dynamic.inetia.pl) (Remote host closed the connection)
2024-05-13 15:54:22 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 268 seconds)
2024-05-13 15:54:51 +0200dezalator(~dezalator@77-254-94-95.dynamic.inetia.pl)
2024-05-13 15:56:54 +0200dezalator(~dezalator@77-254-94-95.dynamic.inetia.pl) (Remote host closed the connection)
2024-05-13 16:01:09 +0200hueso(~root@user/hueso) (Ping timeout: 268 seconds)
2024-05-13 16:02:53 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
2024-05-13 16:03:43 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 246 seconds)
2024-05-13 16:04:12 +0200 <dmj`> https://www.wired.com/story/inside-the-cult-of-the-haskell-programmer/
2024-05-13 16:04:33 +0200zzz_(~yin@user/zero)
2024-05-13 16:04:58 +0200zzz(~yin@user/zero) (Killed (NickServ (GHOST command used by zzz_)))
2024-05-13 16:05:05 +0200zzz_zzz
2024-05-13 16:06:14 +0200xdminsy(~xdminsy@117.147.70.240) (Read error: Connection reset by peer)
2024-05-13 16:07:01 +0200xdminsy(~xdminsy@117.147.70.240)
2024-05-13 16:07:28 +0200hueso(~root@user/hueso)
2024-05-13 16:13:14 +0200danse-nr3(~danse-nr3@an-19-162-214.service.infuturo.it)
2024-05-13 16:13:56 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-13 16:20:58 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2024-05-13 16:30:53 +0200 <ski> "Specifying Filler-Gap Dependency Parsers in a Linear-Logic Programming Language" in 1992 at <https://repository.upenn.edu/server/api/core/bitstreams/5d453ced-e21d-46a5-9935-3f403a32b5a6/content>,"A Linear Logic Treatment of Phrase Structure Grammars For Unbounded Dependencies" in 1997-09 at <https://link.springer.com/content/pdf/10.1007/3-540-48975-4_8.pdf>, both by Joshua S. Hodas
2024-05-13 16:36:03 +0200 <ski> dmj` : amusing
2024-05-13 16:36:55 +0200hueso(~root@user/hueso) (Ping timeout: 268 seconds)
2024-05-13 16:39:56 +0200hueso(~root@user/hueso)
2024-05-13 16:46:25 +0200zzz(~yin@user/zero) (Ping timeout: 246 seconds)
2024-05-13 16:48:30 +0200zzz(~yin@user/zero)
2024-05-13 16:48:39 +0200danse-nr3(~danse-nr3@an-19-162-214.service.infuturo.it) (Remote host closed the connection)
2024-05-13 16:49:10 +0200danse-nr3(~danse-nr3@an-19-162-214.service.infuturo.it)
2024-05-13 16:52:01 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 16:53:46 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 17:05:09 +0200chele(~chele@user/chele) (Remote host closed the connection)
2024-05-13 17:10:56 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 17:11:47 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 17:14:54 +0200danse-nr3(~danse-nr3@an-19-162-214.service.infuturo.it) (Read error: Connection reset by peer)
2024-05-13 17:15:43 +0200danse-nr3(~danse-nr3@151.57.39.218)
2024-05-13 17:16:40 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Remote host closed the connection)
2024-05-13 17:16:54 +0200m1dnight(~christoph@82.146.125.185) (Quit: WeeChat 4.2.2)
2024-05-13 17:17:04 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
2024-05-13 17:17:22 +0200m1dnight(~christoph@82.146.125.185)
2024-05-13 17:17:37 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 268 seconds)
2024-05-13 17:19:17 +0200Square2(~Square4@user/square) (Ping timeout: 252 seconds)
2024-05-13 17:21:36 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 17:26:38 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2024-05-13 17:28:10 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.1)
2024-05-13 17:30:39 +0200sawilagar(~sawilagar@user/sawilagar) (Quit: Leaving)
2024-05-13 17:33:01 +0200 <stefan-__> I am using haskell-language-server via Emacs' lsp-mode, any idea why only a minimal documentation is shown, e.g.:
2024-05-13 17:33:04 +0200 <stefan-__> https://matrix.42dots.de/_matrix/media/v3/download/matrix.42dots.de/DiBITy1opNjoQQXCDOwuLjsM6vauzZ…
2024-05-13 17:33:11 +0200sawilagar(~sawilagar@user/sawilagar)
2024-05-13 17:33:39 +0200 <stefan-__> I would expect it to show at least the description "Render the table.", as on hackage: https://hackage.haskell.org/package/brick-2.3.1/docs/Brick-Widgets-Table.html#v:renderTable
2024-05-13 17:34:54 +0200 <stefan-__> also I followed this configuration for the cabal project: https://haskell-language-server.readthedocs.io/en/latest/configuration.html#how-to-show-local-docu…
2024-05-13 17:36:02 +0200 <c_wraith> I wonder if it's just pulling from the .hi file. That looks like what you'd get from running :info in ghci
2024-05-13 17:36:30 +0200 <c_wraith> the .hi file *can* contain documentation, but only if you've compiled the library with it enabled.
2024-05-13 17:37:45 +0200 <stefan-__> after setting the cabal config I did a "cabal haddock" not sure if that is enough
2024-05-13 17:38:31 +0200 <c_wraith> that only builds documentation for the package you're in. If you need documentation for your dependencies, you'll need to rebuild them
2024-05-13 17:40:07 +0200 <c_wraith> yeah, that page definitely implies that it's pulling info out of the .hi file. I wish that wasn't so awkward to deal with.
2024-05-13 17:40:11 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-13 17:40:48 +0200 <stefan-__> how do I do a rebuild of the dependencies? "cabal clean && cabal build" seems to build only my program
2024-05-13 17:40:49 +0200euleritian(~euleritia@dynamic-176-003-078-122.176.3.pool.telefonica.de) (Read error: Connection reset by peer)
2024-05-13 17:41:06 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-13 17:42:09 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 17:42:11 +0200 <c_wraith> yeah, you'd need to wipe the directory cabal builds stuff in. I honestly don't know where that is since they started using XDG stuff. I can't find it anymore.
2024-05-13 17:42:17 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds)
2024-05-13 17:43:47 +0200 <tomsmeding> stefan-__: you can enable building documentation globally always by setting the 'documentation' key in ~/.cabal/config
2024-05-13 17:44:03 +0200 <tomsmeding> but that hammer may be somewhat too large :p
2024-05-13 17:45:15 +0200 <tomsmeding> stefan-__: have you tried putting 'documentation: True' in your cabal.project for the project? (If you don't have one yet, you also need 'packages: .' in there)
2024-05-13 17:45:37 +0200 <c_wraith> tomsmeding: that doesn't build the same docs.
2024-05-13 17:45:47 +0200 <tomsmeding> _oh_
2024-05-13 17:45:51 +0200 <tomsmeding> you're right
2024-05-13 17:45:52 +0200 <stefan-__> it seems to build to "~/.cabal/store/ghc-9.8.2/"
2024-05-13 17:45:55 +0200 <tomsmeding> oops
2024-05-13 17:45:58 +0200 <tomsmeding> ignore me :)
2024-05-13 17:46:14 +0200 <stefan-__> removed that directory, now the dependencies are rebuilding :)
2024-05-13 17:46:36 +0200 <c_wraith> you still have a .cabal directory? lucky
2024-05-13 17:47:02 +0200 <dmj`> ski: they make it sound like it's frankenstein
2024-05-13 17:48:31 +0200dezalator(~dezalator@77-254-94-95.dynamic.inetia.pl)
2024-05-13 17:49:04 +0200titibandit(~titibandi@user/titibandit) (Ping timeout: 246 seconds)
2024-05-13 17:50:52 +0200 <c_wraith> ah. there it is. .local/state/cabal/store is the default if it's using XDG paths.
2024-05-13 17:54:02 +0200 <ski> dmj` : because it's blub to them
2024-05-13 17:57:29 +0200mdpete(~mdpete@46.143.107.90)
2024-05-13 17:58:09 +0200 <stefan-__> c_wraith: this helped https://github.com/haskell/haskell-language-server/issues/4210#issuecomment-2094925497 :)
2024-05-13 17:58:18 +0200urdh(~urdh@user/urdh) (Quit: Boom!)
2024-05-13 17:59:47 +0200urdh(~urdh@user/urdh)
2024-05-13 18:00:46 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2024-05-13 18:00:55 +0200euleritian(~euleritia@dynamic-176-003-078-122.176.3.pool.telefonica.de)
2024-05-13 18:01:46 +0200 <mdpete> I have started to learn basics of programming . I read that there is no best first programming language. I guess Haskell programmers are more into joy of programming. Would you please recommend me as a beginner what you should do if you had the chance to srtart again as a total beginner?
2024-05-13 18:01:47 +0200danse-nr3(~danse-nr3@151.57.39.218) (Ping timeout: 264 seconds)
2024-05-13 18:04:20 +0200ft(~ft@p508db8fc.dip0.t-ipconnect.de)
2024-05-13 18:07:19 +0200 <c_wraith> stefan-__: note that for whatever reason, the -haddock flag seems to make installing primitive break. It's not really fully-supported yet...
2024-05-13 18:07:59 +0200 <EvanR> mdpete, the same thing I did as a beginner. Figure out as soon as possible how to show graphics and make sounds
2024-05-13 18:08:37 +0200 <EvanR> unless you really really like processing data files
2024-05-13 18:09:32 +0200 <stefan-__> c_wraith: tnx, lets see how it goes
2024-05-13 18:15:58 +0200 <mdpete> EvanR ,would you please explain a bit more, how I can do it
2024-05-13 18:16:44 +0200 <mdpete> I just know ,variables, if statement, and lists
2024-05-13 18:17:06 +0200 <EvanR> this is haskell, so you will be doing pattern matching a lot more than "if statement"
2024-05-13 18:17:07 +0200 <mdpete> and how to define a function
2024-05-13 18:17:15 +0200 <EvanR> have you tried following a basic haskell tutorial
2024-05-13 18:18:00 +0200 <mdpete> I learned these in Python , and read some chapter of Scheme.
2024-05-13 18:18:17 +0200 <mdpete> I am self studying without any university degree
2024-05-13 18:18:49 +0200 <EvanR> the diagrams library and the gloss library are two things which can make showing some graphics easy
2024-05-13 18:19:21 +0200 <EvanR> you probably have to forget any python you know to get started in haskell
2024-05-13 18:20:07 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.2.2)
2024-05-13 18:22:07 +0200dezalator(~dezalator@77-254-94-95.dynamic.inetia.pl) (Remote host closed the connection)
2024-05-13 18:24:02 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2024-05-13 18:24:11 +0200 <mdpete> excuse me If I ask much questions, I am very patient , and I believe in learning foundations deeply. Do you recommend to spend time to get used to how haskell force its developers think? or the easy way of python , I don't have any favorites .
2024-05-13 18:24:58 +0200 <EvanR> you're not forced to learn new things, but it's a good idea
2024-05-13 18:25:19 +0200xal(~xal@mx1.xal.systems) ()
2024-05-13 18:25:47 +0200xal(~xal@mx1.xal.systems)
2024-05-13 18:25:51 +0200 <mdpete> Thank you.
2024-05-13 18:26:51 +0200 <mdpete> which has more beginner friendly learning resources, haskell or ocamel?
2024-05-13 18:30:13 +0200crumpetsforlife(~falafel@173-245-217-246.nrt.as54203.net)
2024-05-13 18:30:13 +0200crumpetsforlifefalafel
2024-05-13 18:31:03 +0200petrichor(~znc-user@user/petrichor) (Quit: ZNC 1.8.2 - https://znc.in)
2024-05-13 18:34:17 +0200falafel_(~falafel@173-245-203-52.iad.as54203.net)
2024-05-13 18:35:01 +0200falafel_(~falafel@173-245-203-52.iad.as54203.net) (Client Quit)
2024-05-13 18:35:16 +0200xal(~xal@mx1.xal.systems) ()
2024-05-13 18:35:19 +0200falafel(~falafel@173-245-217-246.nrt.as54203.net) (Ping timeout: 268 seconds)
2024-05-13 18:35:25 +0200falafel_(~falafel@173-245-203-52.iad.as54203.net)
2024-05-13 18:35:50 +0200xal(~xal@mx1.xal.systems)
2024-05-13 18:36:31 +0200xal(~xal@mx1.xal.systems) (Client Quit)
2024-05-13 18:37:14 +0200xal(~xal@mx1.xal.systems)
2024-05-13 18:37:51 +0200xal(~xal@mx1.xal.systems) (Client Quit)
2024-05-13 18:37:59 +0200titibandit(~titibandi@user/titibandit)
2024-05-13 18:38:24 +0200xal(~xal@mx1.xal.systems)
2024-05-13 18:40:31 +0200xal(~xal@mx1.xal.systems) (Client Quit)
2024-05-13 18:41:14 +0200rosco(rosco@gateway/vpn/airvpn/rosco)
2024-05-13 18:43:09 +0200rosco(rosco@gateway/vpn/airvpn/rosco) (Client Quit)
2024-05-13 18:48:10 +0200mdpete(~mdpete@46.143.107.90) ()
2024-05-13 18:51:24 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
2024-05-13 19:01:13 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2024-05-13 19:01:55 +0200xal(~xal@mx1.xal.systems)
2024-05-13 19:02:38 +0200destituion(~destituio@2a02:2121:2c4:e7b9:2895:2152:25e1:7ece) (Quit: Quit)
2024-05-13 19:03:01 +0200__monty__(~toonn@user/toonn) (Ping timeout: 272 seconds)
2024-05-13 19:09:17 +0200euleritian(~euleritia@dynamic-176-003-078-122.176.3.pool.telefonica.de) (Ping timeout: 252 seconds)
2024-05-13 19:13:12 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-05-13 19:16:29 +0200 <cheater> what are y'all approaches to the following? you have a piece of code (library) which is complex to use. you want to write a hello world for it that is self sufficient. do you put that in a separate module somewhere?
2024-05-13 19:16:54 +0200 <cheater> tests aren't it
2024-05-13 19:17:30 +0200 <cheater> divinating recommendations out of test suites is like reading poetry that's been translated to german, then to hungarian
2024-05-13 19:20:53 +0200 <[Leary]> You can put such a module in extra-source-files, or embed the code in your docs and use 'doctest'.
2024-05-13 19:21:27 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 19:32:11 +0200Miroboru(~myrvoll@178-164-114.82.3p.ntebredband.no) (Quit: Lost terminal)
2024-05-13 19:32:52 +0200 <zzz> what's going on with this table's formatting? https://github.com/ghc-proposals/ghc-proposals/blob/joachim/ghc2024/proposals/0000-ghc2024.rst#8wh…
2024-05-13 19:37:41 +0200__monty__(~toonn@user/toonn)
2024-05-13 19:38:34 +0200todi(~todi@p57803331.dip0.t-ipconnect.de)
2024-05-13 19:39:33 +0200ocra8(ocra8@user/ocra8)
2024-05-13 19:42:16 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-05-13 19:44:29 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds)
2024-05-13 19:47:16 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2024-05-13 19:48:35 +0200falafel_(~falafel@173-245-203-52.iad.as54203.net) (Ping timeout: 264 seconds)
2024-05-13 19:48:40 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Excess Flood)
2024-05-13 19:49:22 +0200rosco(~rosco@yp-146-6.tm.net.my)
2024-05-13 19:49:43 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-05-13 19:52:28 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2024-05-13 19:52:46 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2024-05-13 19:57:40 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9) (Remote host closed the connection)
2024-05-13 19:57:59 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9)
2024-05-13 19:58:18 +0200gentauro(~gentauro@user/gentauro)
2024-05-13 20:00:57 +0200 <cheater> [Leary]: what about putting the code right next to module Foo.Bar.Baz in something like Foo.Bar.Reference ?
2024-05-13 20:03:59 +0200 <cheater> like if i'm writing a reference impl of Foo.Bar.Baz
2024-05-13 20:04:14 +0200 <cheater> or maybe Foo.Bar.Help
2024-05-13 20:07:12 +0200 <glguy> cheater: you'd just need to make sure that your examples didn't get compiled into the library itself. Users of the library shouldn't be including your examples
2024-05-13 20:07:44 +0200 <cheater> glguy: what suggestions do you have for that?
2024-05-13 20:07:53 +0200 <cheater> (if any) (this sounds a little tough)
2024-05-13 20:08:09 +0200 <glguy> Is your example an executable, then you'd make an extra executable target in the cabal file
2024-05-13 20:08:23 +0200 <cheater> nah it's a lib
2024-05-13 20:08:29 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 240 seconds)
2024-05-13 20:08:36 +0200 <glguy> You might even make it buildable:False by default if it's not something a user of the library needs
2024-05-13 20:09:05 +0200 <glguy> You can make it a test component of your package if it building is part of your testing process
2024-05-13 20:09:11 +0200 <cheater> i do want it *built* during a normal local or CI build so that the Help module gets typechecked
2024-05-13 20:09:30 +0200 <glguy> If you're building it in CI you'd just set up your CI environment to build it
2024-05-13 20:09:38 +0200 <glguy> set a flag that causes it to build, for example
2024-05-13 20:09:45 +0200 <cheater> hmm i wouldn't like Help for a module under /src to live under /somethingelse
2024-05-13 20:09:58 +0200 <cheater> i'd really prefer for Help.hs to be in the same dir as Foo.hs for which Help.hs is meant
2024-05-13 20:10:20 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-13 20:10:54 +0200 <glguy> Since you're trying to show users how to use your library, it'll make sense for your example usage of it to be "outside" the library
2024-05-13 20:11:33 +0200 <cheater> idk that it does. doc comments live right next to the function
2024-05-13 20:11:40 +0200 <cheater> we don't put them in /comments/Foo.hs
2024-05-13 20:11:46 +0200 <glguy> comments aren't a replacement for full documentation
2024-05-13 20:12:08 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 268 seconds)
2024-05-13 20:12:33 +0200 <cheater> idk that i agree since most haskell code is *only* documented by comments. but even then, if we follow this logic, then neither is Help.hs going to be a replacement for full documentation.
2024-05-13 20:12:56 +0200 <glguy> You don't need us to approve, you can just do whatever feels good
2024-05-13 20:13:19 +0200tremon(~tremon@83.80.159.219) (Quit: getting boxed in)
2024-05-13 20:13:20 +0200 <cheater> i don't mean to be overly defensive, i'm just trying to understand the different kinds of arguments for and against
2024-05-13 20:13:45 +0200 <glguy> You'll get the most out of your examples if they use the public interface to the library
2024-05-13 20:13:57 +0200 <glguy> and if you don't burden consumers of the library with having to build examples
2024-05-13 20:14:11 +0200 <glguy> and the best way to demonstrate the public interface is to be a public interface consume
2024-05-13 20:14:12 +0200 <glguy> r
2024-05-13 20:14:43 +0200 <cheater> oh, well
2024-05-13 20:14:53 +0200 <cheater> i see what you mean
2024-05-13 20:15:09 +0200 <cheater> but in this case, i'm working on a massive monorepo with dozens of libs
2024-05-13 20:15:25 +0200 <cheater> so there isn't even a public interface
2024-05-13 20:15:27 +0200 <glguy> the example should have a build-dep: with whatever the library is
2024-05-13 20:15:34 +0200 <glguy> that's the "public interface" from Haskell point of view
2024-05-13 20:15:50 +0200philopsos1(~caecilius@user/philopsos)
2024-05-13 20:16:04 +0200 <cheater> yeah. i'm just saying it's like, all private interface
2024-05-13 20:16:07 +0200 <cheater> very intertwined
2024-05-13 20:16:29 +0200 <cheater> the dependency graph looks like that red string meme
2024-05-13 20:17:10 +0200 <glguy> In the case the example might be useful to the users as it shows what a mess of build-deps they'll need
2024-05-13 20:17:39 +0200 <cheater> the only other users are the devs of the monorepo
2024-05-13 20:17:47 +0200 <glguy> that's fine
2024-05-13 20:17:55 +0200 <cheater> hmm
2024-05-13 20:18:11 +0200 <glguy> presumably those devs aren't forming a hivemend or you wouldn't be making examples in the first place
2024-05-13 20:18:28 +0200 <cheater> sometimes i wonder
2024-05-13 20:18:53 +0200 <glguy> if they are, then just think the examples to them :)
2024-05-13 20:19:06 +0200 <cheater> but what if they forget
2024-05-13 20:21:13 +0200 <cheater> sometimes my own forgetfulness makes me think our memories are just biological cassette tape
2024-05-13 20:21:58 +0200 <glguy> I do support [Leary]'s suggestion of putting the examples in module comments and using doctest to check them, especially for very limited scope examples: here's how to use just this one function/module
2024-05-13 20:22:12 +0200 <glguy> at least for the cases that are simple enough for doctest to load them
2024-05-13 20:25:34 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 260 seconds)
2024-05-13 20:26:28 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2024-05-13 20:26:34 +0200roboguy_(~roboguy_@216.147.124.110)
2024-05-13 20:26:40 +0200roboguy_(~roboguy_@216.147.124.110) (Client Quit)
2024-05-13 20:34:43 +0200 <cheater> the examples i'm thinking of are a little more involved than that
2024-05-13 20:34:53 +0200 <cheater> like 2-3 screens of code
2024-05-13 20:36:01 +0200 <zzz> how can i visualize a dependency graph? cabal-plan?
2024-05-13 20:37:29 +0200 <tomsmeding> cabal-plan dot
2024-05-13 20:37:45 +0200 <zzz> tomsmeding: ty
2024-05-13 20:37:55 +0200 <tomsmeding> zzz: tip: cabal-plan dot --hide-builtin
2024-05-13 20:43:22 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 20:44:13 +0200 <ncf> why the hell do we have xor :: NonEmpty Bool -> Bool but not [Bool] -> Bool
2024-05-13 20:46:29 +0200gawen(~gawen@user/gawen) (Quit: cya)
2024-05-13 20:46:53 +0200zzz(~yin@user/zero) (Ping timeout: 272 seconds)
2024-05-13 20:47:15 +0200 <glguy> probably xor had it before getting pulled into base
2024-05-13 20:47:31 +0200 <tomsmeding> s/xor/nonempty/
2024-05-13 20:47:42 +0200 <mauke> :t xor
2024-05-13 20:47:43 +0200 <lambdabot> Bits a => a -> a -> a
2024-05-13 20:48:29 +0200zzz(~yin@user/zero)
2024-05-13 20:48:29 +0200 <mauke> :t foldl' (/=) False
2024-05-13 20:48:30 +0200 <lambdabot> Foldable t => t Bool -> Bool
2024-05-13 20:51:13 +0200 <zzz> mauke: thath's fun
2024-05-13 20:51:17 +0200 <monochrom> https://www.cs.utoronto.ca/~trebla/eq-wiltink.pdf shows how to use how xnor aka (==) as a monoid operator to solve a famous logic puzzle.
2024-05-13 20:51:40 +0200 <tomsmeding> (hey, a dutchman)
2024-05-13 20:53:26 +0200gawen(~gawen@user/gawen)
2024-05-13 20:54:54 +0200 <tomsmeding> that proof on the first page conflates booleans and truth values
2024-05-13 20:54:58 +0200 <tomsmeding> feels very weird to read that
2024-05-13 20:55:20 +0200 <monochrom> It is a correct conflation in classical logic.
2024-05-13 20:55:24 +0200 <tomsmeding> it is
2024-05-13 20:55:43 +0200 <tomsmeding> I'm not saying the proof is wrong, but the first step took me embarrassingly long to understand
2024-05-13 20:55:57 +0200 <tomsmeding> "what does that even mean"
2024-05-13 20:56:24 +0200 <tomsmeding> "associativity of ===" is also a funny statement to make to a constructivist
2024-05-13 20:58:10 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-13 20:59:27 +0200 <tomsmeding> monochrom: the case of the paper is a bit weird though, I think; the author argues that natural deduction is not great because it is inefficient, but efficiency is not really the point of natural deduction, is it?
2024-05-13 20:59:41 +0200 <tomsmeding> being obviously based on the axioms and thus obviously correct is the point, I thought
2024-05-13 21:00:11 +0200 <tomsmeding> the author even quotes Gentzen referring to formalisation of mathematical proofs
2024-05-13 21:00:27 +0200 <mauke> I don't understand the problem
2024-05-13 21:00:31 +0200 <tomsmeding> possibly a confusion of terminology occurred here
2024-05-13 21:00:46 +0200 <mauke> the solution is clearly that not enough information is given to determine an answer
2024-05-13 21:01:04 +0200 <tomsmeding> where Wiltink interpreted "formalisation" to mean "writing proofs in a formalism", whereas Gentzen perhaps intended it to mean "expressing proofs in terms of axioms"
2024-05-13 21:01:36 +0200 <tomsmeding> mauke: it's given that one of the two caskets contains a portrait
2024-05-13 21:01:42 +0200 <monochrom> I acknowledge and like the value of natural deduction in being in perfect correspondence with functional programming.
2024-05-13 21:01:47 +0200 <mauke> yes
2024-05-13 21:01:58 +0200 <APic> Yes.
2024-05-13 21:02:30 +0200 <mauke> so far there are three possible universes
2024-05-13 21:02:39 +0200 <monochrom> But I disdain the "value" in corresponding to verbal reasoning. Natural languages were not intelligently designed.
2024-05-13 21:03:01 +0200 <tomsmeding> monochrom: who claims that value?
2024-05-13 21:03:12 +0200 <monochrom> Gentzen?
2024-05-13 21:03:17 +0200emmanuelux(~emmanuelu@user/emmanuelux)
2024-05-13 21:03:20 +0200 <tomsmeding> he doesn't in the text quoted by Wiltink
2024-05-13 21:03:20 +0200 <monochrom> Everyone else?
2024-05-13 21:03:48 +0200 <tomsmeding> so if he does, then Wiltink chose a very awkward piece of Gentzen's writing to quote :p
2024-05-13 21:04:13 +0200 <mauke> one where the gold casket contains a portrait and the silver casket doesn't, one where the silver casket contains a portrait and the gold one doesn't, and one where both caskets contain a portrait
2024-05-13 21:04:26 +0200 <monochrom> During Gentzen's time, "actual reasoning" means verbal reasoning.
2024-05-13 21:04:28 +0200 <mauke> this is unrelated to any inscriptions on the caskets
2024-05-13 21:04:32 +0200kadir(~kadir@85.103.183.96)
2024-05-13 21:04:33 +0200 <tomsmeding> mauke: "one of which contains a portrait of a lady"
2024-05-13 21:04:38 +0200 <tomsmeding> one /= two
2024-05-13 21:04:45 +0200 <tomsmeding> your third universe is excluded by assumption
2024-05-13 21:04:51 +0200 <mauke> one is a subset of two
2024-05-13 21:04:58 +0200 <tomsmeding> ah, natural language strikes again
2024-05-13 21:05:30 +0200 <mauke> consider this situation: there are two caskets, one of which does not contain a portrait
2024-05-13 21:06:54 +0200 <mauke> anyway, even in the "exactly one" interpretation we're left with two possible outcomes and nothing to disambiguate
2024-05-13 21:07:04 +0200 <tomsmeding> right
2024-05-13 21:07:37 +0200 <tomsmeding> mauke: the gold inscription talks about "The portrait"
2024-05-13 21:07:47 +0200 <mauke> if the portrait is in the gold casket, the gold inscription is false and the silver inscription is self-reinforcing (it is false if assumed to be false and true if assumed to be true)
2024-05-13 21:08:02 +0200 <tomsmeding> if you modify the gold inscription to "A portrait" and the proof's conclusion also to "A portrait", I think the result continues to hold
2024-05-13 21:08:13 +0200 <mauke> if the portrait is in the silver casket, the gold inscription is true and the silver inscription is self-refuting (it is false if assumed to be true and true if assumed to be false)
2024-05-13 21:08:15 +0200 <tomsmeding> now with ambiguity whether the silver one also contains a portrait
2024-05-13 21:09:01 +0200 <tomsmeding> mauke: isn't a self-refuting statement a contradiction?
2024-05-13 21:09:05 +0200 <ncf> yeah
2024-05-13 21:09:21 +0200 <ncf> the hidden piece of information is that both sentences are meaningful
2024-05-13 21:09:23 +0200 <mauke> it's a paradox
2024-05-13 21:09:40 +0200 <tomsmeding> isn't that kind of the semantical definition of a contradiction
2024-05-13 21:09:48 +0200 <mauke> sure
2024-05-13 21:09:50 +0200 <tomsmeding> "this thing is true but it's also not true"
2024-05-13 21:10:03 +0200 <mauke> but I can write all kinds of things on caskets
2024-05-13 21:10:08 +0200 <mauke> doesn't affect their contents in any way
2024-05-13 21:10:21 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-05-13 21:10:27 +0200 <ncf> (as in, have a truth value)
2024-05-13 21:10:37 +0200 <ncf> mauke: think of it this way: there are 2^3 = 8 universes
2024-05-13 21:10:49 +0200 <ncf> one bit for the position of the thing, and one bit for the truth of each sentence
2024-05-13 21:10:59 +0200 <tomsmeding> I think doubting the validity of the inscriptions misses the point of the puzzle :p
2024-05-13 21:11:00 +0200 <ncf> your argument shows that only two universes are possible, and in those two the thing is in the thing
2024-05-13 21:11:18 +0200ncfchecks page again
2024-05-13 21:11:27 +0200 <ncf> the portrait is in the gold casket
2024-05-13 21:11:41 +0200 <mauke> if both inscriptions are required to have a truth value, no solutions are possible
2024-05-13 21:11:45 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-05-13 21:12:05 +0200 <ncf> yes: portrait in gold casket, gold casket lying, silver casket who cares
2024-05-13 21:12:13 +0200 <tomsmeding> there are -- gold is false, silver is either true or false
2024-05-13 21:12:29 +0200 <tomsmeding> two possible universes, but the solution of where the portrait is doesn't depend on that choice
2024-05-13 21:12:30 +0200 <mauke> in one case, the silver inscription is neither true nor false (paradox), in the other, the silver inscription is both true and false
2024-05-13 21:12:37 +0200 <mauke> "who cares" is not a truth value
2024-05-13 21:12:47 +0200 <ncf> its' not both true and false
2024-05-13 21:12:49 +0200 <ncf> it can be either
2024-05-13 21:12:50 +0200euleritian(~euleritia@dynamic-176-006-186-214.176.6.pool.telefonica.de)
2024-05-13 21:12:55 +0200 <ncf> both worlds are possible
2024-05-13 21:13:06 +0200 <mauke> they are the same world
2024-05-13 21:13:24 +0200 <ncf> do i need to slap you with a fixed point
2024-05-13 21:13:47 +0200 <ncf> "this sentence is true" denotes a fixed point of the identity. in classical logic there are two: true and false
2024-05-13 21:13:48 +0200rosco(~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
2024-05-13 21:13:50 +0200 <mauke> no, a continuum hypothesis
2024-05-13 21:14:11 +0200 <monochrom> I was just hoping to show that it is beautiful that boolean (==) makes a monoid.
2024-05-13 21:14:36 +0200 <monochrom> But I guess I am speaking to a community that even refuse to use booleans for logic at all.
2024-05-13 21:14:56 +0200 <tomsmeding> I don't think this discussion was about that :)
2024-05-13 21:15:26 +0200 <tomsmeding> this discussion was about interpreting the puzzle's text too literally so that you miss the point of the puzzle
2024-05-13 21:15:45 +0200 <tomsmeding> although I agree that if you start writing self-referential sentences, you better be damn clear about what exactly you mean
2024-05-13 21:17:38 +0200 <monochrom> Yeah there is the assumption that this self-reference has a solution.
2024-05-13 21:17:51 +0200 <tomsmeding> there is the implicit "the"
2024-05-13 21:18:08 +0200 <tomsmeding> which is admittedly unrelated, but at the level of preciseness that you need in such a context
2024-05-13 21:18:13 +0200zzz(~yin@user/zero) (Quit: leaving)
2024-05-13 21:18:16 +0200 <tomsmeding> it clearly threw mauke off
2024-05-13 21:18:49 +0200 <ncf> mauke: if i were to formalise this in, say, Agda, i would postulate that there is a boolean type Casket = gold | silver, a predicate HasPainting : Casket → DecProp such that HasPainting(gold) ∨ HasPainting(silver), a DecProp Gold such that Gold ≃ ¬HasPainting(gold), and a DecProp Silver such that Silver ≃ ExactlyOne Gold Silver, and then proceed to show that HasPainting(gold) holds
2024-05-13 21:19:58 +0200 <mauke> I think I need to reformulate this problem a bit
2024-05-13 21:20:30 +0200euleritian(~euleritia@dynamic-176-006-186-214.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-05-13 21:20:48 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-13 21:21:11 +0200 <mauke> I am a violent lunatic who hates your guts. I have trapped you in a locked room. In the room, there are two boxes. One of them contains a key that lets you out, the other contains a bomb that goes off when you open the box and blows you to bits.
2024-05-13 21:21:18 +0200 <mauke> also, there are inscriptions on the boxes or whatever
2024-05-13 21:21:22 +0200 <mauke> which box do you open?
2024-05-13 21:22:21 +0200 <tomsmeding> mauke: you can still do logic on the inscriptions
2024-05-13 21:22:35 +0200 <mauke> yes, but what good will that do you?
2024-05-13 21:22:37 +0200 <tomsmeding> whether the conclusion applies to reality is then predicated on whether you believe that the inscriptions apply to reality
2024-05-13 21:22:54 +0200 <tomsmeding> the article does not claim that the portrait is _actually_ in that casket
2024-05-13 21:23:01 +0200 <tomsmeding> it just claims that it is the logical conclusion of the inscriptions
2024-05-13 21:23:03 +0200 <monochrom> But the casket logic puzzle does not begin with someone who is a violent lunatic who gates my guts.
2024-05-13 21:23:05 +0200 <mauke> in the original puzzle, you know that at least one inscription does not apply to reality
2024-05-13 21:23:10 +0200 <mauke> because the gold inscription is false
2024-05-13 21:23:34 +0200 <tomsmeding> mauke: the article does not draw a conclusion about the caskets
2024-05-13 21:23:46 +0200 <monochrom> It begins with someone who makes sure that each sentence is honest or lying.
2024-05-13 21:23:47 +0200 <int-e> the inscription could be meaningless
2024-05-13 21:23:49 +0200 <tomsmeding> it draws a conclusion from the inscriptions
2024-05-13 21:24:11 +0200 <ncf> we've been over this <ncf> the hidden piece of information is that both sentences are meaningful
2024-05-13 21:24:19 +0200 <ncf> if you refuse to read the inscriptions there is no puzzle
2024-05-13 21:24:37 +0200 <monochrom> In the same way the sentinel puzzle begins with "you don't know whether he's honest or lying but it is one of them".
2024-05-13 21:24:44 +0200 <int-e> ncf: ah. how long has... oh god.
2024-05-13 21:25:26 +0200 <ncf> in other words, logic puzzles are not a survival manual
2024-05-13 21:27:04 +0200 <monochrom> For the lunatic case, I may consider adding the simulation hypothesis and say that I'm in a simulation, not the least because why else there is lunatic targetting me, so I open both boxes to ensure efficient end of the simulation. >:)
2024-05-13 21:28:22 +0200 <monochrom> Right? We know of escape rooms that are way more logical than the lunatic. :)
2024-05-13 21:33:20 +0200yin(~yin@user/zero)
2024-05-13 21:34:43 +0200 <mauke> ok, what's wrong with the following? consider a similar situation but with the gold inscription G being "the silver inscription is true" and the silver inscription S being "the gold inscription is false". I can then formally prove that the portrait is in the gold casket (P(G)) in a derivation similar to that in the paper.
2024-05-13 21:35:51 +0200 <mauke> true ==> true \/ P(G) ==> (S = -G) \/ P(G) ==> (S = -S) \/ P(G) ==> false \/ P(G) ==> P(G)
2024-05-13 21:36:07 +0200 <int-e> has anybody mentioned https://en.wikipedia.org/wiki/Unexpected_hanging_paradox yet? (at least not by this name)
2024-05-13 21:37:40 +0200 <monochrom> My supervisor (that would be the Hehner mentioned in the paper) changed that to the less morbid: The teacher says there is a surprise test this week. :)
2024-05-13 21:38:57 +0200 <int-e> mauke: You can also prove that the portrait is in the silver casket, so you get two portraits!
2024-05-13 21:39:05 +0200 <mauke> yes :-)
2024-05-13 21:39:15 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-13 21:40:21 +0200 <mauke> I consider this derivation defective because you can't just plug some (possibly contradictory) statements into a formula, derive a result according to some logical rules, and then call it a day
2024-05-13 21:40:54 +0200 <mauke> but what makes this derivation different from the "proof" in the paper?
2024-05-13 21:43:40 +0200 <int-e> It's not. It's just assumed that the assumptions are consistent, and in your case they aren't.
2024-05-13 21:43:50 +0200 <monochrom> You are right, but since your version contains a contradiction (equivalently a fixed point equation that has no solution), every complete proof system will prove the same nonsense. This means even natural deduction is vulnerable.
2024-05-13 21:44:37 +0200rekahsoft(~rekahsoft@184.148.6.204)
2024-05-13 21:44:37 +0200 <monochrom> But I don't worry about it because it is then the question's fault.
2024-05-13 21:44:43 +0200 <int-e> (I feel that a complete solution to the original problem should exhibit a model. Or both :))
2024-05-13 21:44:59 +0200 <mauke> ooh, I know what this is
2024-05-13 21:45:08 +0200 <mauke> this is like the C standard and undefined behavior
2024-05-13 21:45:27 +0200 <monochrom> FSVO "like".
2024-05-13 21:45:32 +0200 <mauke> and mathematicians are C compilers that blindly assume UB can never happen :-)
2024-05-13 21:45:47 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-05-13 21:46:14 +0200 <int-e> Eh I wouldn't call it blind trust.
2024-05-13 21:46:24 +0200 <int-e> cf. Gödel
2024-05-13 21:46:27 +0200 <mauke> <monochrom> But I don't worry about it because it is then the question's fault.
2024-05-13 21:46:28 +0200 <int-e> (and many others)
2024-05-13 21:46:44 +0200 <mauke> similarly, the compiler doesn't worry about it because it is then the programmer's fault
2024-05-13 21:47:04 +0200 <EvanR> i didn't follow the entire discussion but can I fork two processes each opens one of the boxes
2024-05-13 21:47:33 +0200 <EvanR> like quantum suicide
2024-05-13 21:47:38 +0200 <monochrom> The lunatic didn't give you a Geiger counter, so you probably can't. :)
2024-05-13 21:47:52 +0200 <dolio> If that's the analogy, then aren't you the one assuming that the program does have undefined behavior even though it doesn't?
2024-05-13 21:48:07 +0200 <monochrom> Then you need to appeal to Penrose and hope that your brain has a Geiger counter built-in.
2024-05-13 21:48:29 +0200 <int-e> Oh and I also love this take on this general type of puzzle: https://xkcd.com/246/
2024-05-13 21:49:17 +0200 <monochrom> Yeah I was ready to believe that the lunatic has one more locked room outside my current locked room.
2024-05-13 21:49:26 +0200 <mauke> hah. "None of the doors actually lead out."
2024-05-13 21:49:56 +0200 <monochrom> It's why my really pragmatic choices are starving to death or blowing to death.
2024-05-13 21:50:11 +0200 <mauke> monochrom: in my version of the puzzle, it is very possible that neither box contains the key since all the information you have about the situation came from me
2024-05-13 21:50:21 +0200yin(~yin@user/zero) (Quit: leaving)
2024-05-13 21:54:25 +0200robosexual(~spaceoyst@5.167.241.127) (Quit: Konversation terminated!)
2024-05-13 21:56:52 +0200philopsos1(~caecilius@user/philopsos) (Ping timeout: 246 seconds)
2024-05-13 21:59:23 +0200philopsos(~caecilius@user/philopsos)
2024-05-13 22:12:33 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) (Remote host closed the connection)
2024-05-13 22:14:16 +0200euphores(~SASL_euph@user/euphores)
2024-05-13 22:24:46 +0200Ryan54(~Ryan@2601:602:8b00:b0f0:598b:fb7d:e718:eb36)
2024-05-13 22:24:50 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-13 22:26:33 +0200sawilagar(~sawilagar@user/sawilagar)
2024-05-13 22:29:43 +0200 <Ryan54> Hey all, looking for some help handling a nested Conduit and wondering if I'm going about it wrong. I have a function someFunc that calls paginate on an aws resource, so the signature is
2024-05-13 22:29:43 +0200 <Ryan54> -- given an environment and uuid, return a stream of results" (MonadResource m) => Env -> UUID -> ConduitT () [[Maybe Text]] m ()
2024-05-13 22:29:44 +0200 <Ryan54> I have a conduit that's calling that based on an input stream: someTextSource
2024-05-13 22:29:44 +0200 <Ryan54> .| mapMC (startQuery env query)
2024-05-13 22:29:45 +0200 <Ryan54> .| concatMapMC (waitForQuery env)
2024-05-13 22:29:45 +0200 <Ryan54> .| concatC
2024-05-13 22:29:46 +0200 <Ryan54> .| mapM_C (liftIO . print)
2024-05-13 22:29:46 +0200 <Ryan54> This doesn't seem to work unfortunately. Does conduit not allow you to produce a stream of streams during the pipeline and concatenate them together? I couldn't tell if ConduitT had a MonoFoldable instance.
2024-05-13 22:30:00 +0200todi(~todi@p57803331.dip0.t-ipconnect.de)
2024-05-13 22:31:31 +0200pavonia(~user@user/siracusa)
2024-05-13 22:40:35 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 256 seconds)
2024-05-13 22:43:03 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-05-13 23:05:40 +0200hiredman(~hiredman@frontier1.downey.family)