2022-11-04 00:00:01 +0100 | <geekosaur> | no parser combinator library that I know of… but perhaps this would be a good use case for alex+happy? |
2022-11-04 00:00:52 +0100 | jlgw_ | (~jw@83-233-104-81.cust.bredband2.com) |
2022-11-04 00:01:22 +0100 | jlgw | (~jw@83-233-104-81.cust.bredband2.com) (Ping timeout: 252 seconds) |
2022-11-04 00:02:09 +0100 | <geekosaur> | also, uh, which variety of regular expression? |
2022-11-04 00:04:08 +0100 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-11-04 00:06:52 +0100 | ski | . o O ( "Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...)" by Russ Cox in 2007-01 at <https://swtch.com/~rsc/regexp/regexp1.html> ) |
2022-11-04 00:07:03 +0100 | <Axman6> | not sure - i feel it shouldnt be too hard to write a small library that adds attoparsec combinators to parse a given expression 'here'. I'm reading https://keleshev.com/compiling-to-assembly-from-scratch/ and its combination of parser combinators and regular expressions is quite nice |
2022-11-04 00:07:17 +0100 | nate3 | (~nate@98.45.169.16) |
2022-11-04 00:07:25 +0100 | jtomas | (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
2022-11-04 00:08:00 +0100 | <Axman6> | one thing though would be that the regex would need to be resumable, if it hasn't succeeded or failed yet, but we run out of input |
2022-11-04 00:08:40 +0100 | <geekosaur> | it has occurred to me that pretty much any use of regex can be "compiled" to any parser combinator. and if you compile it to attoparsec it should be resumable |
2022-11-04 00:10:02 +0100 | <Axman6> | also, on a completely unrelated note, iGot this iPad Pro recently, and having the Blink app with mosh so I can rejoin IRC from anywhere, is fantastic |
2022-11-04 00:11:06 +0100 | <Axman6> | yeah thats an interesting idea - would the performance be comparable though? I guess all the tricks to make regex parsing linear would also apply to how you'd compile it too |
2022-11-04 00:12:20 +0100 | nate3 | (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
2022-11-04 00:13:18 +0100 | <geekosaur> | I expect it'd be similar performance, but admit to optimizations that might well make it noticeably faster than most regexes can get |
2022-11-04 00:13:31 +0100 | absence | (torgeihe@hildring.pvv.ntnu.no) (Ping timeout: 246 seconds) |
2022-11-04 00:13:51 +0100 | teddyc | (theodorc@cassarossa.samfundet.no) (Ping timeout: 260 seconds) |
2022-11-04 00:19:27 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
2022-11-04 00:20:33 +0100 | dcoutts | (~duncan@host86-171-59-120.range86-171.btcentralplus.com) |
2022-11-04 00:22:16 +0100 | dcoutts_ | (~duncan@host86-163-164-210.range86-163.btcentralplus.com) (Ping timeout: 246 seconds) |
2022-11-04 00:25:24 +0100 | dcoutts_ | (~duncan@86.150.41.170) |
2022-11-04 00:27:27 +0100 | <AndreasK> | I remember hearing a talk about staging a regex compiler which then was a lot faster. But I don't remember where it was |
2022-11-04 00:27:37 +0100 | AlexNoo__ | (~AlexNoo@178.34.163.109) |
2022-11-04 00:27:46 +0100 | dcoutts | (~duncan@host86-171-59-120.range86-171.btcentralplus.com) (Ping timeout: 252 seconds) |
2022-11-04 00:27:53 +0100 | <Axman6> | I'd love to see that if you fi9nd it |
2022-11-04 00:28:34 +0100 | <AndreasK> | https://icfp22.sigplan.org/home/haskellsymp-2022# it was at icfp |
2022-11-04 00:28:49 +0100 | <AndreasK> | https://icfp22.sigplan.org/details/haskellsymp-2022/2/Staging-Regular-Expressions-with-Moore-Cayle… |
2022-11-04 00:29:04 +0100 | <Axman6> | A few months ago I ported this to our Daml codebase, because we needed a better implementation of regexes, and it happened to be for validating regular expressions defined in XML Schema: https://wiki.haskell.org/Regular_expressions_for_XML_Schema |
2022-11-04 00:29:11 +0100 | geekosaur | completely fails to be surprised |
2022-11-04 00:29:14 +0100 | <AndreasK> | https://www.youtube.com/watch?v=6oTJbtH0PeI |
2022-11-04 00:29:24 +0100 | <AndreasK> | The talk is on youtube it seems |
2022-11-04 00:30:23 +0100 | <Axman6> | You're a champ AndreasK |
2022-11-04 00:30:31 +0100 | Alex_test | (~al_test@178.34.163.109) (Ping timeout: 252 seconds) |
2022-11-04 00:31:04 +0100 | AlexNoo_ | (~AlexNoo@178.34.163.109) (Ping timeout: 252 seconds) |
2022-11-04 00:33:55 +0100 | redmp | (~redmp@mobile-166-170-43-0.mycingular.net) |
2022-11-04 00:36:01 +0100 | Alex_test | (~al_test@178.34.163.109) |
2022-11-04 00:36:07 +0100 | dyniec | (~dyniec@mail.dybiec.info) |
2022-11-04 00:37:16 +0100 | <monochrom> | No, translating regexes to most parser combinator libraries is an uphill battle, because most parser combinator libraries kill the very nondeterminism that regexes stand for. This is right at the API level. |
2022-11-04 00:38:03 +0100 | ski | . o O ( "IrRegex : IrRegular Expressions" at <http://synthcode.com/scheme/irregex/>,"irregex - Portable Efficient IrRegular Expressions" at <https://github.com/ashinn/irregex/>, by foof ) |
2022-11-04 00:38:04 +0100 | <monochrom> | For example, (00)* 0 (000)* is not going to be simply many "00" >> char "0" >> many "000". |
2022-11-04 00:39:31 +0100 | <monochrom> | Unless you go way back to the very original papers that use String -> [(a, String)] so full nondeterminism is restored. |
2022-11-04 00:39:52 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) |
2022-11-04 00:39:52 +0100 | <monochrom> | (which kills efficiency, which is why everyone ditched it) |
2022-11-04 00:43:07 +0100 | pyrex | coolbat666 |
2022-11-04 00:43:30 +0100 | <ski> | <https://hackage.haskell.org/package/base-4.17.0.0/docs/Text-ParserCombinators-ReadP.html> |
2022-11-04 00:43:37 +0100 | <ski> | @hackage parsek |
2022-11-04 00:43:37 +0100 | <lambdabot> | https://hackage.haskell.org/package/parsek |
2022-11-04 00:44:06 +0100 | <monochrom> | Yeah, or a few nondet parser libraries like ReadP. |
2022-11-04 00:44:12 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) (Ping timeout: 255 seconds) |
2022-11-04 00:44:25 +0100 | coolbat666 | pyrex |
2022-11-04 00:49:33 +0100 | dcoutts | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
2022-11-04 00:51:41 +0100 | teddyc | (theodorc@cassarossa.samfundet.no) |
2022-11-04 00:51:58 +0100 | dcoutts_ | (~duncan@86.150.41.170) (Ping timeout: 252 seconds) |
2022-11-04 00:51:58 +0100 | gentauro | (~gentauro@user/gentauro) (Ping timeout: 252 seconds) |
2022-11-04 00:52:05 +0100 | abhiroop_ | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
2022-11-04 00:52:55 +0100 | dcoutts_ | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
2022-11-04 00:53:37 +0100 | gentauro | (~gentauro@user/gentauro) |
2022-11-04 00:54:43 +0100 | dcoutts | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Ping timeout: 252 seconds) |
2022-11-04 00:58:43 +0100 | dcoutts | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
2022-11-04 00:59:58 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-11-04 01:00:00 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-11.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-11-04 01:00:03 +0100 | dcoutts | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (*.net *.split) |
2022-11-04 01:00:03 +0100 | gentauro | (~gentauro@user/gentauro) (*.net *.split) |
2022-11-04 01:00:03 +0100 | redmp | (~redmp@mobile-166-170-43-0.mycingular.net) (*.net *.split) |
2022-11-04 01:00:04 +0100 | jlgw_ | (~jw@83-233-104-81.cust.bredband2.com) (*.net *.split) |
2022-11-04 01:00:04 +0100 | ystael | (~ystael@user/ystael) (*.net *.split) |
2022-11-04 01:00:18 +0100 | ystael | (~ystael@user/ystael) |
2022-11-04 01:00:24 +0100 | dcoutts_ | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Ping timeout: 255 seconds) |
2022-11-04 01:00:27 +0100 | jlgw_ | (~jw@83-233-104-81.cust.bredband2.com) |
2022-11-04 01:00:27 +0100 | dcoutts | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
2022-11-04 01:03:34 +0100 | dcoutts_ | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
2022-11-04 01:05:15 +0100 | gentauro | (~gentauro@user/gentauro) |
2022-11-04 01:05:18 +0100 | caryhartline | (~caryhartl@107-140-218-181.lightspeed.rcsntx.sbcglobal.net) |
2022-11-04 01:05:18 +0100 | redmp | (~redmp@mobile-166-170-43-0.mycingular.net) |
2022-11-04 01:05:21 +0100 | dcoutts | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Ping timeout: 255 seconds) |
2022-11-04 01:07:58 +0100 | aliosablack | (~chomwitt@2a02:587:7a0a:6300:1ac0:4dff:fedb:a3f1) |
2022-11-04 01:09:21 +0100 | chomwitt | (~chomwitt@2a02:587:dc18:4a00:1ac0:4dff:fedb:a3f1) (Ping timeout: 246 seconds) |
2022-11-04 01:12:03 +0100 | king_gs1 | (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) |
2022-11-04 01:12:04 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
2022-11-04 01:12:06 +0100 | king_gs | (~Thunderbi@187.201.83.115) (Read error: Connection reset by peer) |
2022-11-04 01:12:06 +0100 | king_gs1 | king_gs |
2022-11-04 01:13:13 +0100 | pavonia | (~user@user/siracusa) (Read error: Connection reset by peer) |
2022-11-04 01:13:25 +0100 | redmp | (~redmp@mobile-166-170-43-0.mycingular.net) (Quit: leaving) |
2022-11-04 01:13:35 +0100 | dcoutts_ | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Remote host closed the connection) |
2022-11-04 01:13:35 +0100 | pavonia | (~user@user/siracusa) |
2022-11-04 01:13:54 +0100 | dcoutts_ | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
2022-11-04 01:18:32 +0100 | aliosablack | (~chomwitt@2a02:587:7a0a:6300:1ac0:4dff:fedb:a3f1) (Ping timeout: 276 seconds) |
2022-11-04 01:21:30 +0100 | SoF4 | (~skius@user/skius) |
2022-11-04 01:22:01 +0100 | SoF | (~skius@user/skius) (Read error: Connection reset by peer) |
2022-11-04 01:22:01 +0100 | SoF4 | SoF |
2022-11-04 01:24:26 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
2022-11-04 01:28:57 +0100 | king_gs | (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 246 seconds) |
2022-11-04 01:30:04 +0100 | dcoutts_ | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Remote host closed the connection) |
2022-11-04 01:30:24 +0100 | dcoutts_ | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
2022-11-04 01:30:31 +0100 | abhiroop | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
2022-11-04 01:30:34 +0100 | ncf | (~n@monade.li) (Quit: Fairfarren.) |
2022-11-04 01:30:47 +0100 | ncf | (~n@monade.li) |
2022-11-04 01:31:16 +0100 | abhiroop_ | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 248 seconds) |
2022-11-04 01:39:08 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-11-04 01:39:18 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 01:40:29 +0100 | absence | (torgeihe@hildring.pvv.ntnu.no) |
2022-11-04 01:41:17 +0100 | king_gs | (~Thunderbi@187.201.83.115) |
2022-11-04 01:44:28 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
2022-11-04 01:46:27 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-04 01:46:30 +0100 | SoF | (~skius@user/skius) (Remote host closed the connection) |
2022-11-04 01:46:59 +0100 | SoF | (~skius@user/skius) |
2022-11-04 01:49:10 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
2022-11-04 01:49:44 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
2022-11-04 01:55:57 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
2022-11-04 01:59:17 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 02:00:26 +0100 | zeenk | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!) |
2022-11-04 02:00:26 +0100 | king_gs | (~Thunderbi@187.201.83.115) (Read error: Connection reset by peer) |
2022-11-04 02:01:30 +0100 | ub | (~Thunderbi@77.119.197.59.wireless.dyn.drei.com) |
2022-11-04 02:02:54 +0100 | ubert | (~Thunderbi@77.119.196.32.wireless.dyn.drei.com) (Ping timeout: 246 seconds) |
2022-11-04 02:02:54 +0100 | ub | ubert |
2022-11-04 02:03:37 +0100 | king_gs | (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) |
2022-11-04 02:03:44 +0100 | talismanick | (~talismani@2601:200:c100:c9e0::1b0b) |
2022-11-04 02:04:55 +0100 | mtjm | (~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection) |
2022-11-04 02:06:08 +0100 | mtjm | (~mutantmel@2604:a880:2:d0::208b:d001) |
2022-11-04 02:06:09 +0100 | <talismanick> | Say I have `f <$> foo <*> bar <|> g <$> foo <*> bar`, where `foo` and `bar` are quite long. How might I deduplicate with `liftM2 (<|>) f g`? |
2022-11-04 02:08:27 +0100 | <dsal> | Making them not quite long is always a good idea. |
2022-11-04 02:09:16 +0100 | <c_wraith> | I wouldn't use the function instance for liftM2 there. It just makes people work harder to see what's going on |
2022-11-04 02:10:36 +0100 | bgamari_ | (~bgamari@64.223.168.223) (Ping timeout: 255 seconds) |
2022-11-04 02:10:36 +0100 | <pyrex> | fwiw i think i would probably write liftA2 f foo bar <|> liftA2 g foo bar |
2022-11-04 02:10:44 +0100 | motherfsck | (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
2022-11-04 02:10:52 +0100 | bgamari | (~bgamari@68.238.49.149) |
2022-11-04 02:10:54 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-11-04 02:11:39 +0100 | <c_wraith> | if foo and bar are complex expressions, put them in a let or where |
2022-11-04 02:11:48 +0100 | <pyrex> | i might write `let go z = liftA2 z foo bar in go f <|> go g` |
2022-11-04 02:12:15 +0100 | <talismanick> | pyrex: yeah, a let binding could clear things up |
2022-11-04 02:13:23 +0100 | <talismanick> | Or, I could make it even more extensible by fmap'ing `<$>foo <*> bar` over a list of functions, then foldr1 (<|>) |
2022-11-04 02:13:26 +0100 | <pyrex> | fwiw i think `on (<|>) (\x -> liftA2 x foo bar) f g` maybe does what you want, but i haven't checked that |
2022-11-04 02:15:12 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine) |
2022-11-04 02:15:32 +0100 | Kaipei | (~Kaiepi@108.175.84.104) (Ping timeout: 248 seconds) |
2022-11-04 02:16:23 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2022-11-04 02:17:01 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-11-04 02:20:05 +0100 | razetime | (~quassel@117.254.35.246) |
2022-11-04 02:20:24 +0100 | caryhartline | (~caryhartl@107-140-218-181.lightspeed.rcsntx.sbcglobal.net) (Quit: caryhartline) |
2022-11-04 02:21:32 +0100 | <talismanick> | It works. Muahahaha |
2022-11-04 02:23:02 +0100 | abhiroop_ | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
2022-11-04 02:23:11 +0100 | abhiroop | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 272 seconds) |
2022-11-04 02:24:41 +0100 | motherfsck | (~motherfsc@user/motherfsck) |
2022-11-04 02:24:49 +0100 | <[Leary]> | Or something like this: asum $ [f, g] <&> \h -> h <$> foo <*> bar |
2022-11-04 02:29:30 +0100 | xff0x | (~xff0x@2405:6580:b080:900:aa5a:50b3:fed5:3fc2) (Ping timeout: 255 seconds) |
2022-11-04 02:30:25 +0100 | nate3 | (~nate@98.45.169.16) |
2022-11-04 02:34:01 +0100 | <SrPx> | HVM history and next steps: https://twitter.com/VictorTaelin/status/1588332432587005952 |
2022-11-04 02:36:26 +0100 | nineonine | (~nineonine@2604:3d08:7780:cd00:a9d4:e2db:2f89:8800) (Remote host closed the connection) |
2022-11-04 02:40:21 +0100 | ub | (~Thunderbi@178.115.71.138.wireless.dyn.drei.com) |
2022-11-04 02:41:44 +0100 | ubert | (~Thunderbi@77.119.197.59.wireless.dyn.drei.com) (Ping timeout: 276 seconds) |
2022-11-04 02:41:45 +0100 | ub | ubert |
2022-11-04 02:46:59 +0100 | <talismanick> | [Leary]: Oh, that is better than what I wrote |
2022-11-04 02:47:08 +0100 | <talismanick> | learn something new everyday! |
2022-11-04 02:48:47 +0100 | jargon_ | (~jargon@174-22-194-21.phnx.qwest.net) (Remote host closed the connection) |
2022-11-04 02:57:25 +0100 | <byorgey> | SrPx: cool stuff |
2022-11-04 02:57:43 +0100 | <SrPx> | byorgey: ty (: |
2022-11-04 03:01:14 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 276 seconds) |
2022-11-04 03:03:00 +0100 | inversed | (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 248 seconds) |
2022-11-04 03:10:15 +0100 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2022-11-04 03:13:32 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-11-04 03:13:32 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-11-04 03:13:32 +0100 | finn_elija | FinnElija |
2022-11-04 03:14:00 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
2022-11-04 03:15:32 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2022-11-04 03:15:33 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-04 03:23:12 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 03:27:00 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 248 seconds) |
2022-11-04 03:27:36 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) |
2022-11-04 03:28:32 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 276 seconds) |
2022-11-04 03:34:07 +0100 | nate3 | (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
2022-11-04 03:38:19 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
2022-11-04 03:38:54 +0100 | olivermead | (~olivermea@cpc72329-sotn15-2-0-cust205.15-1.cable.virginm.net) |
2022-11-04 03:39:12 +0100 | <c209e6dc-4d76-47> | ghci complains if I have a polymorphic lambda inside a let binding, do I have to enable FlexibleContext or RankNTypes? |
2022-11-04 03:39:29 +0100 | <olivermead> | what's the complaint? |
2022-11-04 03:39:53 +0100 | jargon | (~jargon@174-22-194-21.phnx.qwest.net) |
2022-11-04 03:41:41 +0100 | <sm> | some debug tracing/logging helpers I've been updating.. comments/testing welcome |
2022-11-04 03:41:42 +0100 | <sm> | https://threadreaderapp.com/thread/1588358412730916864.html |
2022-11-04 03:43:30 +0100 | <c_wraith> | c209e6dc-4d76-47: inside a let? do you have an extension enabled that implies MonoLocalBinds? |
2022-11-04 03:46:55 +0100 | <c209e6dc-4d76-47> | I'm using stack ghc 8.6.5 which is complaining but cabal ghc 8.10.7 is fine, so I'm trying to bump the stack resolver and see if it is a problem with ghc version |
2022-11-04 03:49:34 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 03:49:59 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
2022-11-04 03:50:29 +0100 | ygsjg | (~quassel@189.124.224.160) (Read error: Connection reset by peer) |
2022-11-04 03:51:39 +0100 | abhiroop | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
2022-11-04 03:51:51 +0100 | abhiroop_ | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 255 seconds) |
2022-11-04 04:06:18 +0100 | mvk | (~mvk@2607:fea8:5ce3:8500::4b68) (Ping timeout: 255 seconds) |
2022-11-04 04:21:13 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 268 seconds) |
2022-11-04 04:24:06 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-11-04 04:24:06 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-11-04 04:24:06 +0100 | finn_elija | FinnElija |
2022-11-04 04:24:21 +0100 | <ski> | talismanick : would you like to do the `<|>' before or after the `<$>' and `<*>' ? (in your snippet, it's `<|>' before) |
2022-11-04 04:24:47 +0100 | td_ | (~td@83.135.9.44) (Ping timeout: 272 seconds) |
2022-11-04 04:24:54 +0100 | <ski> | `<|>' before : |
2022-11-04 04:25:06 +0100 | <ski> | @type \f g foo bar -> (liftA2 . liftA2) (<|>) (liftA2 f) (liftA2 g) foo bar |
2022-11-04 04:25:08 +0100 | <lambdabot> | Alternative f => (a1 -> b -> a2) -> (a1 -> b -> a2) -> f a1 -> f b -> f a2 |
2022-11-04 04:25:17 +0100 | <ski> | @let asumMap :: (Foldable t,Alternative i) => (a -> i b) -> (t a -> i b); asumMap = (getAlt .) . foldMap . (Alt .) |
2022-11-04 04:25:18 +0100 | <lambdabot> | Defined. |
2022-11-04 04:25:34 +0100 | <ski> | @type \f g foo bar -> asumMap (\h -> liftA2 h foo bar) [f,g] |
2022-11-04 04:25:35 +0100 | <lambdabot> | Alternative i => (a -> b1 -> b2) -> (a -> b1 -> b2) -> i a -> i b1 -> i b2 |
2022-11-04 04:25:44 +0100 | <ski> | `mplus' after : |
2022-11-04 04:25:50 +0100 | <ski> | @let infixr 9 .:; (.:) :: (c0 -> c1) -> (a -> b -> c0) -> (a -> b -> c1); (.:) = (.) . (.) |
2022-11-04 04:25:51 +0100 | <lambdabot> | Defined. |
2022-11-04 04:25:55 +0100 | td_ | (~td@83.135.9.48) |
2022-11-04 04:25:58 +0100 | <ski> | @let infixl 4 <*>>; (<*>>) :: Monad m => m (a -> m b) -> (m a -> m b); mamb <*>> ma = join (mamb <*> ma) |
2022-11-04 04:25:59 +0100 | <lambdabot> | Defined. |
2022-11-04 04:26:08 +0100 | <ski> | @type \f g foo bar -> (liftA2 . liftA2) mplus (pure .: f) (pure .: g) <$> foo <*>> bar |
2022-11-04 04:26:09 +0100 | <lambdabot> | MonadPlus m => (a1 -> a2 -> b) -> (a1 -> a2 -> b) -> m a1 -> m a2 -> m b |
2022-11-04 04:26:19 +0100 | <ski> | @let oneOfM :: (Foldable t,MonadPlus m) => t a -> m a; oneOfM = foldr (mplus . return) mzero |
2022-11-04 04:26:20 +0100 | <lambdabot> | Defined. |
2022-11-04 04:26:24 +0100 | <ski> | @type \f g foo bar -> ((.: sequence) . (.: sequence)) oneOfM [f,g] <$> foo <*>> bar |
2022-11-04 04:26:25 +0100 | <lambdabot> | MonadPlus m => (b1 -> a -> b2) -> (b1 -> a -> b2) -> m b1 -> m a -> m b2 |
2022-11-04 04:27:45 +0100 | <ski> | (and no, i'm not really suggesting you to use the more pointless forms .. that's mostly some gymnastics, while exploring the two alternatives) |
2022-11-04 04:28:57 +0100 | <ski> | with the "before", you're first introducing a choice, then, in each branch, you perform `foo' and `bar' |
2022-11-04 04:29:31 +0100 | <ski> | with the "after", you're first performing `foo' and `bar', then introduce branching (using `f' or `g') |
2022-11-04 04:30:00 +0100 | <ski> | `Alternative' suffices for "before", while `MonadPlus' is needed for "after" |
2022-11-04 04:30:50 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!) |
2022-11-04 04:33:37 +0100 | <ski> | (otoh, i think `<*>>' can often be a handy operator) |
2022-11-04 04:34:12 +0100 | abhiroop | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 248 seconds) |
2022-11-04 04:35:56 +0100 | <sm> | phew, https://www.parsonsmatt.org/2022/10/29/spooky_masks_and_async_exceptions.html was a scary tale |
2022-11-04 04:36:09 +0100 | <Axman6> | sm: `args = unsafePerformIO getArgs` is horrific... but I understand why it's been done that way; definitely saves a lot of plumbing for something which is essentially pure within the app |
2022-11-04 04:36:34 +0100 | <sm> | just like an implicit Reader, right ? |
2022-11-04 04:36:43 +0100 | <Axman6> | yeah |
2022-11-04 04:37:29 +0100 | ski | . o O ( distribution, mobile code marshalling ) |
2022-11-04 04:37:53 +0100 | <Axman6> | possibly consider making args = unsafePerformIO getArgs a top level definition (unexported) so it doesn't get rerun in each of the functions that call debugLevel |
2022-11-04 04:38:09 +0100 | <sm> | good idea |
2022-11-04 04:38:23 +0100 | <Axman6> | then I think you can get rid of all the NOINLINEs elsewhere |
2022-11-04 04:38:56 +0100 | <sm> | I wasn't sure if those were needed, but I notice HLS warns me about them being missing now (sometimes) |
2022-11-04 04:39:54 +0100 | <sm> | I don't know if OPTIONS_GHC -fno-cse is useful at all |
2022-11-04 04:41:55 +0100 | Kaipei | (~Kaiepi@108.175.84.104) |
2022-11-04 04:42:50 +0100 | zaquest | (~notzaques@5.130.79.72) (Remote host closed the connection) |
2022-11-04 04:47:50 +0100 | zaquest | (~notzaques@5.130.79.72) |
2022-11-04 04:49:34 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
2022-11-04 04:50:54 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) |
2022-11-04 04:53:55 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
2022-11-04 04:58:27 +0100 | razetime | (~quassel@117.254.35.246) (Ping timeout: 255 seconds) |
2022-11-04 05:02:49 +0100 | abhiroop | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
2022-11-04 05:02:54 +0100 | sm | removes all pragmas HLS doesn't complain about |
2022-11-04 05:03:44 +0100 | <sm> | hlint, actually |
2022-11-04 05:04:24 +0100 | <ski> | .. keeping only those it complains about ? |
2022-11-04 05:05:07 +0100 | <sm> | heh.. keeping the ones it wants me to keep |
2022-11-04 05:06:35 +0100 | <ski> | which does it have an opinion about, here ? |
2022-11-04 05:07:21 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 05:09:23 +0100 | <sm> | I just updated https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Utils/Print.hs and https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Utils/Print.hs showing the two it warns about (modifiedProgName and progArgs) |
2022-11-04 05:09:43 +0100 | <sm> | s/Print/Debug/ |
2022-11-04 05:12:04 +0100 | abhiroop | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 248 seconds) |
2022-11-04 05:12:08 +0100 | <ski> | `NOINLINE', ok |
2022-11-04 05:14:55 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-11-04 05:15:31 +0100 | <sm> | I'm not sure why hlint doesn't complain about this unsafePerformIO user though: |
2022-11-04 05:15:31 +0100 | <sm> | https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Utils/Debug.hs#L249 |
2022-11-04 05:15:58 +0100 | <sm> | or this one: https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Utils/Print.hs#L123 |
2022-11-04 05:17:26 +0100 | <sm> | ie, it doesn't require NOINLINE for those |
2022-11-04 05:19:11 +0100 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-11-04 05:21:39 +0100 | king_gs | (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 268 seconds) |
2022-11-04 05:25:56 +0100 | simpleauthority | (~simpleaut@user/simpleauthority) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-11-04 05:26:58 +0100 | simpleauthority | (~simpleaut@user/simpleauthority) |
2022-11-04 05:33:56 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
2022-11-04 05:34:03 +0100 | mbuf | (~Shakthi@49.205.86.6) |
2022-11-04 05:38:52 +0100 | inversed | (~inversed@bcdcac82.skybroadband.com) |
2022-11-04 05:46:01 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-04 05:50:17 +0100 | Vajb | (~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57) (Read error: Connection reset by peer) |
2022-11-04 05:50:39 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
2022-11-04 05:52:55 +0100 | raym | (~ray@user/raym) (Quit: coming back with FreeBSD 13.1-p3) |
2022-11-04 06:07:32 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
2022-11-04 06:13:17 +0100 | tomku | (~tomku@user/tomku) (Ping timeout: 240 seconds) |
2022-11-04 06:17:07 +0100 | rembo10 | (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-11-04 06:19:18 +0100 | rembo10 | (~rembo10@main.remulis.com) |
2022-11-04 06:19:37 +0100 | raym | (~ray@user/raym) |
2022-11-04 06:20:20 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2022-11-04 06:21:51 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-04 06:22:28 +0100 | tolt | (~weechat-h@li219-154.members.linode.com) (Ping timeout: 248 seconds) |
2022-11-04 06:28:25 +0100 | dcoutts__ | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
2022-11-04 06:29:27 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 06:31:27 +0100 | dcoutts_ | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Ping timeout: 272 seconds) |
2022-11-04 06:33:33 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-11-04 06:33:47 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 246 seconds) |
2022-11-04 06:33:53 +0100 | Vajb | (~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57) |
2022-11-04 06:36:13 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-04 06:40:26 +0100 | off^ | (~off@76.145.185.103) (Remote host closed the connection) |
2022-11-04 06:41:14 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 06:44:35 +0100 | dcoutts | (~duncan@host86-144-78-132.range86-144.btcentralplus.com) |
2022-11-04 06:46:39 +0100 | dcoutts__ | (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Ping timeout: 272 seconds) |
2022-11-04 06:46:55 +0100 | dcoutts_ | (~duncan@host86-144-78-132.range86-144.btcentralplus.com) |
2022-11-04 06:49:36 +0100 | dcoutts | (~duncan@host86-144-78-132.range86-144.btcentralplus.com) (Ping timeout: 255 seconds) |
2022-11-04 06:55:25 +0100 | dcoutts__ | (~duncan@host86-144-78-132.range86-144.btcentralplus.com) |
2022-11-04 06:58:09 +0100 | dcoutts_ | (~duncan@host86-144-78-132.range86-144.btcentralplus.com) (Ping timeout: 255 seconds) |
2022-11-04 06:58:25 +0100 | dcoutts | (~duncan@host81-156-211-157.range81-156.btcentralplus.com) |
2022-11-04 06:59:33 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Read error: Connection reset by peer) |
2022-11-04 07:00:35 +0100 | dcoutts__ | (~duncan@host86-144-78-132.range86-144.btcentralplus.com) (Ping timeout: 272 seconds) |
2022-11-04 07:02:29 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Ping timeout: 272 seconds) |
2022-11-04 07:02:56 +0100 | _xor | (~xor@74.215.182.83) (Read error: Connection reset by peer) |
2022-11-04 07:03:07 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-11-04 07:05:35 +0100 | intelligent_boat | (~intellibo@user/intelligent-boat/x-3514795) |
2022-11-04 07:05:40 +0100 | arahael | (~arahael@124.168.94.52) (Ping timeout: 248 seconds) |
2022-11-04 07:06:20 +0100 | _xor | (~xor@74.215.182.83) |
2022-11-04 07:16:33 +0100 | arahael | (~arahael@124.168.94.52) |
2022-11-04 07:23:30 +0100 | chomwitt | (~chomwitt@ppp-94-69-177-170.home.otenet.gr) |
2022-11-04 07:24:56 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-04 07:26:13 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-04 07:31:01 +0100 | nate3 | (~nate@98.45.169.16) |
2022-11-04 07:31:48 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 248 seconds) |
2022-11-04 07:35:57 +0100 | nate3 | (~nate@98.45.169.16) (Ping timeout: 255 seconds) |
2022-11-04 07:59:00 +0100 | kenran | (~user@user/kenran) |
2022-11-04 07:59:44 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2022-11-04 08:04:05 +0100 | lucerne | (~lucerne@5.113.247.76) |
2022-11-04 08:14:41 +0100 | tgi | (~thegeekin@189.180.115.115) (Ping timeout: 272 seconds) |
2022-11-04 08:14:43 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) |
2022-11-04 08:15:30 +0100 | jtomas | (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) |
2022-11-04 08:16:47 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-04 08:22:39 +0100 | manwithl- | (~manwithlu@194.177.28.176) (Read error: Connection reset by peer) |
2022-11-04 08:22:39 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-11-04 08:26:09 +0100 | manwithluck | (~manwithlu@194.177.28.176) |
2022-11-04 08:26:14 +0100 | <Axman6> | @hoogle stripPrefix |
2022-11-04 08:26:15 +0100 | <lambdabot> | Data.List stripPrefix :: Eq a => [a] -> [a] -> Maybe [a] |
2022-11-04 08:26:15 +0100 | <lambdabot> | GHC.OldList stripPrefix :: Eq a => [a] -> [a] -> Maybe [a] |
2022-11-04 08:26:15 +0100 | <lambdabot> | Data.ByteString stripPrefix :: ByteString -> ByteString -> Maybe ByteString |
2022-11-04 08:26:42 +0100 | <Axman6> | sm: this looks useful for the command line option parsing you're doing |
2022-11-04 08:27:05 +0100 | <Axman6> | > Data.List.stripPrefix "--output=" "--output=hello" |
2022-11-04 08:27:06 +0100 | <lambdabot> | Just "hello" |
2022-11-04 08:27:32 +0100 | lucerne | (~lucerne@5.113.247.76) (Remote host closed the connection) |
2022-11-04 08:27:46 +0100 | ski | would like to be able to use that in a pattern synonym .. alas |
2022-11-04 08:28:07 +0100 | <sm> | thanks! |
2022-11-04 08:28:20 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 248 seconds) |
2022-11-04 08:28:20 +0100 | acidjnk | (~acidjnk@p200300d6e7137a51b984c8c27a82076c.dip0.t-ipconnect.de) |
2022-11-04 08:28:29 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-11-04 08:29:04 +0100 | kuribas | (~user@2a02:1810:2825:6000:f0b5:eba4:a391:e0d0) |
2022-11-04 08:30:23 +0100 | <tomsmeding> | ski: why not? |
2022-11-04 08:30:53 +0100 | shriekingnoise | (~shrieking@186.137.167.202) (Quit: Quit) |
2022-11-04 08:32:05 +0100 | <ski> | something like |
2022-11-04 08:32:10 +0100 | <ski> | pattern (++) :: Eq a => [a] -> ([a] -> [a]) |
2022-11-04 08:32:18 +0100 | <ski> | pattern xs ++ ys <- (stripPrefix xs -> Just ys) |
2022-11-04 08:32:20 +0100 | <ski> | or even |
2022-11-04 08:32:26 +0100 | <ski> | pattern [ ] ++ ys <- ys |
2022-11-04 08:32:27 +0100 | <ski> | pattern (x:xs) ++ ys <- x : xs ++ ys |
2022-11-04 08:32:35 +0100 | <ski> | (recursively defined pattern synonym) |
2022-11-04 08:32:49 +0100 | <ski> | (rename `++' to something else, if you prefer) |
2022-11-04 08:34:49 +0100 | <tomsmeding> | ski: https://paste.tomsmeding.com/ln3QSYG5 |
2022-11-04 08:34:58 +0100 | <tomsmeding> | use as (Prefix @"prefix" s) |
2022-11-04 08:35:10 +0100 | <ski> | tomsmeding : because pattern synonyms (as currently done .. unlike how functions in Mercury work, say), can only be applied to parameter patterns, not to parameter expressions. above, we define the pattern `xs ++ ys' for *expressions* `xs' and patterns `ys', in terms of pattern definentia (right-hand sides) (like `(stripPrefix xs -> Just ys)', or `ys', `x : xs ++ ys') |
2022-11-04 08:35:28 +0100 | <tomsmeding> | yes, see paste :p |
2022-11-04 08:35:50 +0100 | <ski> | hah, that's a cute trick :b |
2022-11-04 08:36:10 +0100 | <tomsmeding> | don't use in code that other people need to understand lol |
2022-11-04 08:36:20 +0100 | <ski> | in Mercury, one can declare |
2022-11-04 08:36:32 +0100 | <ski> | :- func list(T) ++ list(T) = list(T). |
2022-11-04 08:36:42 +0100 | <ski> | :- mode in ++ in = out is det. |
2022-11-04 08:36:50 +0100 | <ski> | :- mode in ++ out = in is semidet. |
2022-11-04 08:37:02 +0100 | <tomsmeding> | yeah prolog-likes cheat here |
2022-11-04 08:37:10 +0100 | <ski> | [ ] ++ Ys = Ys . |
2022-11-04 08:37:17 +0100 | acidjnk | (~acidjnk@p200300d6e7137a51b984c8c27a82076c.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
2022-11-04 08:37:34 +0100 | <ski> | [X|Xs] ++ Ys = [X|XsYs] :- XsYs = Xs ++ Ys. |
2022-11-04 08:37:42 +0100 | <ski> | (or you can say just |
2022-11-04 08:37:50 +0100 | <ski> | [X|Xs] ++ Ys = [X|Xs ++ Ys]. |
2022-11-04 08:37:53 +0100 | <ski> | if you prefer) |
2022-11-04 08:38:12 +0100 | <ski> | (read `:-' roughly like `where') |
2022-11-04 08:38:23 +0100 | <ski> | (it specifically means "if") |
2022-11-04 08:39:43 +0100 | <tomsmeding> | I've done minor messing around in prolog a while ago, I think I can read this |
2022-11-04 08:40:01 +0100 | <tomsmeding> | semidet is "doesn't match in multiple ways but might not match at all"? |
2022-11-04 08:40:01 +0100 | <ski> | (well, actually, the second case of `++' above should be something like |
2022-11-04 08:40:14 +0100 | <ski> | pattern (x0:xs) ++ ys <- x1 : xs ++ ys | x0 == x1 |
2022-11-04 08:40:15 +0100 | <ski> | ) |
2022-11-04 08:40:22 +0100 | lucerne | (~lucerne@5.113.247.76) |
2022-11-04 08:41:14 +0100 | jonathanx | (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
2022-11-04 08:41:42 +0100 | <ski> | "semidet" means "at most one solution". or, if you prefer, `forall [Xs,XsYs] unique [Ys] Xs ++ Ys = XsYs' (where `unique' means "exists at most one") |
2022-11-04 08:41:50 +0100 | <ski> | (that |
2022-11-04 08:42:16 +0100 | <tomsmeding> | right that's what I was trying to say :p |
2022-11-04 08:43:13 +0100 | <ski> | 's the declarative interpretation of that mode (taking the `in's and `out's into account). the operational interpretation is that prior to the call, the `in' parameters are known/instantiated/uninitialized, while the `out' parameters are unknown/uninstantiated/uninitialized (and after the call, in case of success, both are instantiated/known)) |
2022-11-04 08:44:49 +0100 | <ski> | ("det" means "exactly one solution", so `forall [Xs,Ys] exists_unique [XsYs] Xs ++ Ys = XsYs', which is the same as `forall [Xs,Ys] exists [XsYs0] forall [XsYs1] ( XsYs0 = XsYs1 <=> Xs ++ Ys = XsYs1 )') |
2022-11-04 08:44:53 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
2022-11-04 08:44:53 +0100 | califax | (~califax@user/califx) (Ping timeout: 255 seconds) |
2022-11-04 08:44:59 +0100 | califax_ | (~califax@user/califx) |
2022-11-04 08:45:15 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 255 seconds) |
2022-11-04 08:45:17 +0100 | lucerne | (~lucerne@5.113.247.76) (Read error: Connection reset by peer) |
2022-11-04 08:45:46 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-11-04 08:46:15 +0100 | califax_ | califax |
2022-11-04 08:47:18 +0100 | <ski> | (while `forall [Xs,XsYs] unique [Ys] Xs ++ Ys = XsYs' means `forall [Xs,Ys0,Ys1,XsYs] ( Xs ++ Ys0 = XsYs,Xs ++ Ys1 = XsYs => Ys0 = Ys1)' .. which in this case can be rewritten as `forall [Xs,Ys0,Ys1] ( ( exists [XsYs] Xs ++ Ys0 = XsYs,Xs ++ Ys1 = XsYs ) => Ys0 = Ys1)', iow `forall [Xs,Ys0,Ys1] ( Xs ++ Ys0 = Xs ++ Ys1 => Ys0 = Ys1)', which we recognize as injectivity in the right parameter) |
2022-11-04 08:47:37 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 272 seconds) |
2022-11-04 08:48:16 +0100 | <ski> | (functional dependencies for type classes (being predicates/relations over types) can be interpreted declaratively in a similar way .. although they're less powerful than the Mercury mode declarations) |
2022-11-04 08:48:42 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:7800:8d62:667f:9e70) |
2022-11-04 08:49:57 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
2022-11-04 08:50:20 +0100 | mncheck | (~mncheck@193.224.205.254) |
2022-11-04 08:51:11 +0100 | <ski> | Prolog is pretty neat .. and Mercury is quite cool, too |
2022-11-04 08:51:43 +0100 | lucerne | (~lucerne@5.113.247.76) |
2022-11-04 08:57:09 +0100 | ft | (~ft@80.141.189.89) (Quit: leaving) |
2022-11-04 08:58:03 +0100 | razetime | (~quassel@117.254.35.246) |
2022-11-04 09:02:20 +0100 | m5zs7k | (aquares@web10.mydevil.net) (Ping timeout: 252 seconds) |
2022-11-04 09:03:18 +0100 | mbuf | (~Shakthi@49.205.86.6) (Quit: Leaving) |
2022-11-04 09:06:48 +0100 | m5zs7k | (aquares@web10.mydevil.net) |
2022-11-04 09:09:16 +0100 | odnes | (~odnes@2a02:587:e907:c410::273) |
2022-11-04 09:09:23 +0100 | odnes | (~odnes@2a02:587:e907:c410::273) (Remote host closed the connection) |
2022-11-04 09:10:28 +0100 | jargon | (~jargon@174-22-194-21.phnx.qwest.net) (Ping timeout: 248 seconds) |
2022-11-04 09:11:52 +0100 | chele | (~chele@user/chele) |
2022-11-04 09:14:02 +0100 | MajorBiscuit | (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) |
2022-11-04 09:14:11 +0100 | CiaoSen | (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-11-04 09:14:39 +0100 | ubert1 | (~Thunderbi@178.115.71.138.wireless.dyn.drei.com) |
2022-11-04 09:19:55 +0100 | Major_Biscuit | (~MajorBisc@c-001-021-035.client.tudelft.eduvpn.nl) |
2022-11-04 09:19:58 +0100 | jonathanx_ | (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
2022-11-04 09:21:04 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-11-04 09:21:06 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-11-04 09:21:35 +0100 | cyphase | (~cyphase@user/cyphase) |
2022-11-04 09:22:12 +0100 | jonathanx | (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 248 seconds) |
2022-11-04 09:22:13 +0100 | MajorBiscuit | (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 255 seconds) |
2022-11-04 09:24:42 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
2022-11-04 09:25:40 +0100 | cstml | (~cstml@user/cstml) |
2022-11-04 09:26:34 +0100 | AlexZenon | (~alzenon@178.34.163.109) (Read error: Connection reset by peer) |
2022-11-04 09:26:50 +0100 | AlexZenon | (~alzenon@178.34.163.109) |
2022-11-04 09:27:56 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2022-11-04 09:28:08 +0100 | <cstml> | Hi everyone, gentle reminder about the 2022 State of Haskell Survey. |
2022-11-04 09:29:14 +0100 | <dminuoso> | Mmm, Im quite annoyed by the prevalence of `Int` across so many functions, when most of the time `Word` would be more suitable. |
2022-11-04 09:29:37 +0100 | <dminuoso> | Every way I look at it, the numerics are for the most part extremely horribly done in Haskell. |
2022-11-04 09:30:30 +0100 | <dminuoso> | On the one hand Haskell is frequently advertised as being "reliable" with a "strong and expressive type system", but at the same time we use `Int` in most places where a negative Integer will lead to crashes, corruption, be silently truncated, or do unexpected things.. |
2022-11-04 09:30:37 +0100 | <dminuoso> | And when we do fromIntegral, we get silent truncation everywhere. |
2022-11-04 09:30:54 +0100 | michalz | (~michalz@185.246.207.218) |
2022-11-04 09:30:57 +0100 | <dminuoso> | IEEE 754 calculations have no traps either, so that's another big issue. |
2022-11-04 09:31:46 +0100 | <dminuoso> | It's almost as if the widespread use of `Int` is admitting that people would be fromIntegral'ing their way between numbers anyway, and that the truncating behavior might as well be moved into call sites instead. |
2022-11-04 09:32:06 +0100 | AlexNoo__ | AlexNoo |
2022-11-04 09:34:12 +0100 | <dminuoso> | I would argue that dealing with numeric values is more fun in C than it is in Haskell. :( |
2022-11-04 09:34:43 +0100 | zeenk | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
2022-11-04 09:35:07 +0100 | jludwig | (~justin@li657-110.members.linode.com) (Ping timeout: 272 seconds) |
2022-11-04 09:35:38 +0100 | <ski> | dminuoso : would you expect `Word' rather than `Int' for `length' ? |
2022-11-04 09:35:59 +0100 | <ski> | (i assume you'd want it for `take',`drop',`splitAt', at least) |
2022-11-04 09:36:22 +0100 | <dminuoso> | Sure, or `timeout`, `replicateM` |
2022-11-04 09:36:25 +0100 | <ski> | yea, the downcoercions with `fromIntegral' aren't nice |
2022-11-04 09:36:38 +0100 | ski | nods |
2022-11-04 09:37:42 +0100 | <ski> | what about `Word' subtraction ? |
2022-11-04 09:38:43 +0100 | <ski> | (should one even perhaps have different types for modulo-`2^n' versions of `Word', and ones that signal on underflow & overflow ?) |
2022-11-04 09:38:46 +0100 | <dminuoso> | So Im fine with the overflow semantics in principle, though one could conceive a `withTraps :: a -> a` kind of primitives that will turn overflows into bottom. |
2022-11-04 09:39:01 +0100 | <dminuoso> | (Or via separate types, yes) |
2022-11-04 09:39:48 +0100 | <dminuoso> | Though on second thought, withTraps will be hard to impossible to implement nicely in a call-by-name setting |
2022-11-04 09:39:55 +0100 | paddymahoney | (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Remote host closed the connection) |
2022-11-04 09:40:14 +0100 | cstml | (~cstml@user/cstml) (Quit: WeeChat 3.5) |
2022-11-04 09:40:21 +0100 | <dminuoso> | But one could still conceive either separate methods from a different module (such that you could use `x Trap.- y`), or like you said with a different type |
2022-11-04 09:40:25 +0100 | <tomsmeding> | yeah a separate type for with-traps computations would have clearer semantics |
2022-11-04 09:40:28 +0100 | <tomsmeding> | or that |
2022-11-04 09:40:36 +0100 | ski | . o O ( should we have a `Word'-torsor ? ) |
2022-11-04 09:40:43 +0100 | <tomsmeding> | I feel like we should have an int-cast -like API instead of fromIntegral |
2022-11-04 09:40:50 +0100 | <dminuoso> | tomsmeding: Absolutely agreed. |
2022-11-04 09:40:58 +0100 | <dminuoso> | int-cast should be in base! :) |
2022-11-04 09:41:10 +0100 | <tomsmeding> | I'm using it frighteningly rarely |
2022-11-04 09:41:25 +0100 | <ski> | how would one do the coercions ? |
2022-11-04 09:41:29 +0100 | <ski> | MPTCs ? |
2022-11-04 09:41:44 +0100 | cstml | (~cstml@user/cstml) |
2022-11-04 09:41:44 +0100 | vpan | (~0@212.117.1.172) |
2022-11-04 09:41:50 +0100 | <ski> | (presumably one'd want to distinguish between upcoercions and downcoercions) |
2022-11-04 09:41:56 +0100 | <tomsmeding> | ski: https://hackage.haskell.org/package/int-cast-0.2.0.0/docs/Data-IntCast.html |
2022-11-04 09:43:59 +0100 | jonathanx_ | (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Remote host closed the connection) |
2022-11-04 09:45:44 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-04 09:49:14 +0100 | <ski> | why are some properties using ⌜≡⌝ while others use `==' ? |
2022-11-04 09:50:18 +0100 | <tomsmeding> | ¯\_(ツ)_/¯ |
2022-11-04 09:50:22 +0100 | <ski> | also, for `toInteger (intCastIso a) == toInteger b' (provided `toInteger a == toInteger b'), shouldn't `intCastIso a' here be required to have the same type as `b' ? |
2022-11-04 09:50:42 +0100 | <ski> | (also, is `toInteger' not presumed to be injective ?) |
2022-11-04 09:50:57 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
2022-11-04 09:51:14 +0100 | <tomsmeding> | ski: why would that be required? |
2022-11-04 09:51:51 +0100 | <ski> | (which ?) |
2022-11-04 09:52:06 +0100 | <tomsmeding> | that intCastIso a should have the same type as b |
2022-11-04 09:52:22 +0100 | <tomsmeding> | also toInteger doesn't exist lol |
2022-11-04 09:52:43 +0100 | <ski> | @type toInteger |
2022-11-04 09:52:44 +0100 | <lambdabot> | Integral a => a -> Integer |
2022-11-04 09:52:50 +0100 | <tomsmeding> | o |
2022-11-04 09:53:18 +0100 | <tomsmeding> | ah it's a type class method of course, hence 's' on hackage doesn't show it directly |
2022-11-04 09:53:20 +0100 | <tomsmeding> | I was fooled |
2022-11-04 09:58:05 +0100 | <ski> | well, say `a' has type `Int64', while `b' has type `Int' (on a `64'-bit platform, as they say the table assumes). then if we take `toInteger (intCastIso a :: Word64)', it would seem this will probably not compare equal to `toInteger b' (given `toInteger a' and `toInteger b' compare equal) |
2022-11-04 09:58:59 +0100 | <ski> | (e.g. `a = (-1) :: Int64' and `b = (-1) :: Int'. then `intCastIso a :: Word64' is presumably `maxBound :: Word64', which would still be positive after `toInteger') |
2022-11-04 10:00:03 +0100 | BB[m] | (~cashmagem@2001:470:69fc:105::f6dc) (Quit: You have been kicked for being idle) |
2022-11-04 10:00:03 +0100 | bb010g | (~bb010g@2001:470:69fc:105::9a5) (Quit: You have been kicked for being idle) |
2022-11-04 10:00:49 +0100 | merijn | (~merijn@86.86.29.250) |
2022-11-04 10:02:37 +0100 | <tomsmeding> | heh |
2022-11-04 10:03:19 +0100 | <tomsmeding> | yeah that's a documentation bug |
2022-11-04 10:03:54 +0100 | <ski> | (i would also expect `intCastIso' to be able to coerce from an integral type to itself ..) |
2022-11-04 10:04:11 +0100 | <tomsmeding> | it can |
2022-11-04 10:04:29 +0100 | <tomsmeding> | IsIntBaseTypeIso a a = 'True |
2022-11-04 10:04:58 +0100 | <ski> | hm, ok. haven't gotten that far down yet |
2022-11-04 10:05:07 +0100 | <ski> | (the table doesn't mention this) |
2022-11-04 10:05:10 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:7800:8d62:667f:9e70) (Quit: WeeChat 2.8) |
2022-11-04 10:05:33 +0100 | <tomsmeding> | but yeah that property is invalid |
2022-11-04 10:05:49 +0100 | <tomsmeding> | the first one, that intCastIso is its own inverse, is valid though, I guess |
2022-11-04 10:06:43 +0100 | <tomsmeding> | in fact that second listed property of intCastIso should be a property of intCastEq, it only holds if they really are the same representation with the same meaning |
2022-11-04 10:06:52 +0100 | <tomsmeding> | (modulo newtype/data wrappers) |
2022-11-04 10:07:19 +0100 | <tomsmeding> | well, no not same representation, but actually isomorphic in the sense of preserving all arithmetic operations |
2022-11-04 10:07:50 +0100 | <ski> | presumably the latter property is meant to express that if you have two types which you can convert between, using `intCastIso', then given an element in the "overlap" (as measured by `toInteger' applied to both of them), then `intCastIso' maps one to the other (at least up to applying `toInteger' to both sides) |
2022-11-04 10:08:36 +0100 | <tomsmeding> | hm, I guess that does hold, but it's not what the property says |
2022-11-04 10:08:46 +0100 | <tomsmeding> | and it's hard to describe concisely |
2022-11-04 10:08:53 +0100 | <ski> | it would say that, if it used a type ascription as i indicated |
2022-11-04 10:09:53 +0100 | fserucas_ | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
2022-11-04 10:09:53 +0100 | <tomsmeding> | where exactly? 'toInteger (intCastIso a :: alpha) == toInteger (b :: alpha) if toInteger a == toInteger b'? |
2022-11-04 10:10:51 +0100 | <tomsmeding> | hm, right, that plus the first property would give it |
2022-11-04 10:10:54 +0100 | <tomsmeding> | cool |
2022-11-04 10:10:59 +0100 | fserucas | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
2022-11-04 10:11:35 +0100 | <tomsmeding> | also int-cast needs a metadata update to build with ghc-9 |
2022-11-04 10:11:50 +0100 | <tomsmeding> | which also shows it's underused |
2022-11-04 10:12:06 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-11-04 10:12:38 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2022-11-04 10:14:19 +0100 | <ski> | ∀ α β (a ∷ α) (b ∷ β) . toInteger (intCastIso (a ∷ α) ∷ β) == (toInteger b ∷ β) = True ⇐ toInteger a == toInteger b = True ∧ Integral α ∧ Integral β ∧ IsIntTypeIso α β = 'True |
2022-11-04 10:14:52 +0100 | <tomsmeding> | ski: toInteger (b ∷ β), not toInteger b ∷ β |
2022-11-04 10:14:56 +0100 | <tomsmeding> | but yeah |
2022-11-04 10:15:14 +0100 | <ski> | yea, sorry (meant to fix that, but forgot) |
2022-11-04 10:15:20 +0100 | <tomsmeding> | or just toInteger b, given the ascription in the forall :p |
2022-11-04 10:16:08 +0100 | zeenk | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!) |
2022-11-04 10:16:25 +0100 | <ski> | toInteger (intCastIso a ∷ β) == toInteger (b ∷ β) = True ⇐ toInteger a == toInteger b = True -- if you leave the quantification implicit, as well as the presuppositions |
2022-11-04 10:17:30 +0100 | <tomsmeding> | likely the most readable form |
2022-11-04 10:17:56 +0100 | arjun | (~arjun@user/arjun) |
2022-11-04 10:17:57 +0100 | <ski> | (if they had used ⌜≡⌝ here, i'd've skipped the `= True' parts) |
2022-11-04 10:19:32 +0100 | talismanick | (~talismani@2601:200:c100:c9e0::1b0b) (Ping timeout: 246 seconds) |
2022-11-04 10:20:05 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
2022-11-04 10:21:10 +0100 | ski | . o O ( "Torsors Made Easy" by John Baez in 2009-12-27 at <https://math.ucr.edu/home/baez/torsors.html> ) |
2022-11-04 10:27:03 +0100 | Luj3 | (~Luj@2a01:e0a:5f9:9681:1047:e6e7:4c5c:c3aa) (Quit: The Lounge - https://thelounge.chat) |
2022-11-04 10:27:45 +0100 | Luj3 | (~Luj@2a01:e0a:5f9:9681:82ee:b48:2fc3:8107) |
2022-11-04 10:28:32 +0100 | <ski> | (if you have (absolute) points, then the corresponding torsors are (relative) differences/vectors between them. you can add differences/vectors/torsors to each other, but you can't add absolute points to each other. you can add relative vectors to absolute points, though. e.g. adding `NominalDiffTime' to `UTCTime') |
2022-11-04 10:29:07 +0100 | <tomsmeding> | or simply points in 2D space |
2022-11-04 10:29:26 +0100 | <tomsmeding> | (works in nD, but most intuitive for n >= 2) |
2022-11-04 10:29:35 +0100 | <ski> | yes. affine space vs. linear/vector space |
2022-11-04 10:30:58 +0100 | <tomsmeding> | ah this is actually an example on the page |
2022-11-04 10:31:38 +0100 | <ski> | affine space has affine combination of points (weighted average, where weights add up to `1') |
2022-11-04 10:31:44 +0100 | <tomsmeding> | ski: so what was your point, consider Int to be a torsor of Word? |
2022-11-04 10:32:00 +0100 | <ski> | something like that, yea |
2022-11-04 10:32:08 +0100 | <tomsmeding> | not sure that's super helpful |
2022-11-04 10:32:32 +0100 | <ski> | (or maybe `Int65' for `Word64' ?) |
2022-11-04 10:32:38 +0100 | zeenk | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
2022-11-04 10:33:14 +0100 | ski | 'sn't sure, either |
2022-11-04 10:34:33 +0100 | <ski> | hm, i guess you get boundscrossing anyway, in one direction, or the other, or both, with finite range |
2022-11-04 10:36:58 +0100 | <ski> | i think one reason i've heard people (e.g. in C) suggest to use signed rather than unsigned, even if negative doesn't make sense for some quantity in the problem domain, is it allow intermittent intermediate negative results in computations .. and also avoiding problems with `x >= 0', when decrementing `x' in a loop |
2022-11-04 10:38:18 +0100 | <ski> | s/is it/is to/ |
2022-11-04 10:38:33 +0100 | <dminuoso> | ski: otoh signed overflow is undefined in most languages. |
2022-11-04 10:38:46 +0100 | <dminuoso> | That easily offsets any perceived advantages |
2022-11-04 10:38:51 +0100 | <ski> | yes |
2022-11-04 10:39:25 +0100 | <merijn> | The problem with unsigned is that even in Haskell underflow is hard to detect properly |
2022-11-04 10:39:57 +0100 | <dminuoso> | Well introducing additional primops for these operations that will bottom out is not difficult |
2022-11-04 10:40:16 +0100 | <dminuoso> | (Yes, we still get into imprecise exception semantics, but its better than nothing) |
2022-11-04 10:40:45 +0100 | <dminuoso> | The underlying CMM machinery is already in place |
2022-11-04 10:41:14 +0100 | <dminuoso> | plusWord2# :: Word# -> Word# -> (# Word#, Word# #) |
2022-11-04 10:41:37 +0100 | <dminuoso> | addWordC# :: Word# -> Word# -> (# Word#, Int# #) |
2022-11-04 10:42:08 +0100 | <dminuoso> | So we have the necessary machinery |
2022-11-04 10:43:24 +0100 | <merijn> | We have the technology! |
2022-11-04 10:44:16 +0100 | arjun | (~arjun@user/arjun) (Quit: Leaving) |
2022-11-04 10:44:51 +0100 | <ski> | (one could do `i = count; do { i--; ..i.. } while (i > 0);' (or `i != 0') (possibly unsigned `i') rather than `i = count-1; while (i >= 0) { ..i.. i--; }' (signed `i'), though, assuming `count > 0') |
2022-11-04 10:45:42 +0100 | <dminuoso> | At the very least we should have IEE754 traps. |
2022-11-04 10:45:51 +0100 | <ski> | yes please |
2022-11-04 10:46:49 +0100 | <ski> | (reminds me that `real' is (no longer) an `eqtype', in SML) |
2022-11-04 10:47:47 +0100 | <dminuoso> | ski: However, its quite surprising how far people get with unlawful equality on IEEE754 numbers in JavaScript. I sometimes do wonder about the tradeoff of language elegancy and ergonomics. |
2022-11-04 10:47:56 +0100 | <ski> | dminuoso : a whole word, instead of just a carry ? |
2022-11-04 10:48:09 +0100 | thyriaen | (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) |
2022-11-04 10:48:20 +0100 | <dminuoso> | ski: It's just an artifact of old design. There's ongoing work to turn these primops into sized word types. |
2022-11-04 10:48:56 +0100 | <dminuoso> | Until <=9.0 even the sized primtypes (e.g. Word8#/Int8#) were just mapped to Word#/Int# |
2022-11-04 10:49:27 +0100 | <dminuoso> | which is why it didnt make a difference - but this is currently changing. not sure whether these particular primops are on the scope of the folks reworking them |
2022-11-04 10:49:48 +0100 | <ski> | multiplication and division as well ? |
2022-11-04 10:50:12 +0100 | <dminuoso> | Yes |
2022-11-04 10:50:25 +0100 | <dminuoso> | I mean we already have: timesWord16# :: Word16# -> Word16# -> Word16# and the likes |
2022-11-04 10:50:38 +0100 | olivermead | (~olivermea@cpc72329-sotn15-2-0-cust205.15-1.cable.virginm.net) (Remote host closed the connection) |
2022-11-04 10:50:50 +0100 | <ski> | so not `Word32#' result |
2022-11-04 10:51:19 +0100 | <dminuoso> | Right, and unlike older GHC versions, this will in CMM actually be mapped to such short registers |
2022-11-04 10:51:45 +0100 | <ski> | (also (tangentially) i'd like to see `mod n 0 = n' and `rem n 0 = n') |
2022-11-04 10:51:58 +0100 | <ski> | (well, at least for `mod') |
2022-11-04 10:52:05 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-04 10:52:19 +0100 | <dminuoso> | Can you elaborate your reason for that? |
2022-11-04 10:52:40 +0100 | <dminuoso> | Is mod 0 commonly defined in some fields of mathematics? |
2022-11-04 10:54:18 +0100 | <ski> | `mod n d' and `rem n d' chooses a representative of an equivalence class (coset) in ⌜ℤ ∕ (d⋅ℤ)⌝ (given ⌜n,d : ℤ⌝) |
2022-11-04 10:54:38 +0100 | jludwig | (~justin@li657-110.members.linode.com) |
2022-11-04 10:55:24 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-11-04 10:55:24 +0100 | acidjnk | (~acidjnk@p200300d6e7137a51b984c8c27a82076c.dip0.t-ipconnect.de) |
2022-11-04 10:55:26 +0100 | <dminuoso> | But isnt ℤ/0 ~= ℤ? |
2022-11-04 10:55:56 +0100 | <dminuoso> | Picking `rem n 0 = n` seems quite arbitrary here, it could according to this also be `minBound` or `maxBound` easily |
2022-11-04 10:55:59 +0100 | <dminuoso> | Or 0. |
2022-11-04 10:56:49 +0100 | <ski> | if ⌜d = 0⌝, then ⌜ℤ ∕ (0⋅ℤ)⌝ is just ⌜ℤ⌝. ⌜a ≡ b (mod 0)⌝ simply means ⌜a = b⌝ (generally ⌜a ≡ b (mod d)⌝ means ⌜d ∣ a − b⌝, iow ⌜∃ k : ℤ . a = b + k⋅d⌝) |
2022-11-04 10:57:08 +0100 | <ski> | dminuoso : it's the only sensible choice (apart from leaving it undefined) |
2022-11-04 10:59:30 +0100 | <ski> | also, if you have ⌜0 ⋅ _ = 0⌝ (non-strict), then you even get ⌜d ⋅ div n d + mod n d = n⌝, also when ⌜d = 0⌝ |
2022-11-04 11:01:24 +0100 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 248 seconds) |
2022-11-04 11:02:01 +0100 | <ski> | if you have an element ⌜g⌝ (always invertible) in a group, and you look at the sequence ⌜⋯,g⁻²,g⁻¹,1,g,g²,g³,⋯⌝, then if this sequence is periodic, with period ⌜p⌝, we say that ⌜p⌝ is the order of the element ⌜g⌝ (how many times one have to multiply it by itself to get back to ⌜1⌝) |
2022-11-04 11:02:50 +0100 | teo_ | (~teo@user/teo) |
2022-11-04 11:02:55 +0100 | <ski> | if the sequence never loops, then the correct period ⌜p⌝ to assign is ⌜0⌝ ! (people traditionally often say ⌜∞⌝, but i don't like this too much) |
2022-11-04 11:02:57 +0100 | teo_ | teo |
2022-11-04 11:04:31 +0100 | <ski> | the reason is that the correct ordering of periods to consider is the divisibility ordering ⌜∣⌝ (the multiplicative/geometric ordering), where ⌜0⌝ is the *greatest* element; rather than the usual (additive/arithmetic) ordering ⌜≤⌝ |
2022-11-04 11:05:23 +0100 | __monty__ | (~toonn@user/toonn) |
2022-11-04 11:08:58 +0100 | <ski> | (the reason is that if ⌜m ∣ n⌝, then ⌜gᵐ = 1 ⇒ gⁿ = 1⌝ .. but that doesn't follow from ⌜m ≤ n⌝, in general. note that the claim that ⌜m⌝ is the order of ⌜g⌝ can be defined as ⌜∀ n. m ∣ n ⇔ gⁿ = 1⌝ .. which we read out aloud as "⌜m⌝ is the least ⌜n⌝ (in the divisibility order) such that ⌜gⁿ = 1⌝) |
2022-11-04 11:10:23 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) (Remote host closed the connection) |
2022-11-04 11:12:28 +0100 | <tomsmeding> | completely unrelated question: if you give cabal a too-new ghc with -w, it gives a "warning" and runs away. Can I convince cabal to just go on and try? |
2022-11-04 11:13:12 +0100 | <dminuoso> | Whats the warning you get? |
2022-11-04 11:13:23 +0100 | <ski> | (("universal") properties of the shape ⌜∀ y. x ≤ y ⇔ P y⌝ only make sense when ⌜P⌝ is a monotonic/increawsing/upper property, iow if ⌜x ≤ y⌝ and ⌜P x⌝, then ⌜P y⌝. so if ⌜P⌝ holds at a point, it also holds at all greater points. the property ⌜gⁿ = 1⌝ is monotonic/increasing in ⌜n⌝, only when the ordering we use is the divisibility ordering) |
2022-11-04 11:13:38 +0100 | <tomsmeding> | dminuoso: "Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.6.2.0 supports 'ghc' version < 9.4): /path/to/ghc is version 9.5.20221103" |
2022-11-04 11:14:01 +0100 | <dminuoso> | tomsmeding: its just a warning, no? |
2022-11-04 11:14:09 +0100 | <tomsmeding> | that's what I thought |
2022-11-04 11:14:13 +0100 | <dminuoso> | But? |
2022-11-04 11:14:22 +0100 | <tomsmeding> | that's all it says, no more actions/output |
2022-11-04 11:14:31 +0100 | <merijn> | It's not |
2022-11-04 11:14:37 +0100 | <merijn> | cabal is not forward compatible |
2022-11-04 11:14:44 +0100 | <dminuoso> | merijn: judging from the code, its just a warning. |
2022-11-04 11:15:02 +0100 | <dminuoso> | So it may be that cabal silently crashes in a different place, but that particular diagnostic is not a fatal error. |
2022-11-04 11:15:14 +0100 | <merijn> | I'm not saying the diagnostic is fatal |
2022-11-04 11:15:18 +0100 | jludwig | (~justin@li657-110.members.linode.com) (Quit: ZNC - https://znc.in) |
2022-11-04 11:15:28 +0100 | <merijn> | I'm saying "cabal is not forward compatible, so you have zero guarantees of success" |
2022-11-04 11:15:34 +0100 | <merijn> | hence, the warning |
2022-11-04 11:15:55 +0100 | <dminuoso> | tomsmeding: What happens if you run with -v3? |
2022-11-04 11:16:01 +0100 | <dminuoso> | Can you observe it proceeding with anything? |
2022-11-04 11:16:22 +0100 | <tomsmeding> | secretly it's not me that's getting this, it's a friend of mine; I'll ask him :) |
2022-11-04 11:18:23 +0100 | Guest75 | (~Guest75@178.141.177.81) |
2022-11-04 11:18:43 +0100 | <tomsmeding> | ah there _was_ more output: cabal subsequently complained about ghc-pkg which wasn't up to date with the custom too-new ghc |
2022-11-04 11:19:01 +0100 | <tomsmeding> | telling him to fix the ghc install so that all tools get correctly installed before retrying :) |
2022-11-04 11:22:32 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
2022-11-04 11:26:16 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-11-04 11:27:15 +0100 | <dminuoso> | Okay so you're secretly playing proxy support while you yourself are being lied to! |
2022-11-04 11:27:34 +0100 | <dminuoso> | That's a nice friend of yours. |
2022-11-04 11:27:38 +0100 | <tomsmeding> | yes! |
2022-11-04 11:27:38 +0100 | <dminuoso> | :p |
2022-11-04 11:27:59 +0100 | <tomsmeding> | I mean, they did offer to ask the question here themselves, but I was faster |
2022-11-04 11:29:25 +0100 | kuribas | (~user@2a02:1810:2825:6000:f0b5:eba4:a391:e0d0) (Quit: ERC (IRC client for Emacs 27.1)) |
2022-11-04 11:30:37 +0100 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) |
2022-11-04 11:31:03 +0100 | acidjnk | (~acidjnk@p200300d6e7137a51b984c8c27a82076c.dip0.t-ipconnect.de) (Remote host closed the connection) |
2022-11-04 11:31:21 +0100 | acidjnk | (~acidjnk@p200300d6e7137a51b1aa0752e3eaff2e.dip0.t-ipconnect.de) |
2022-11-04 11:31:48 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-11-04 11:32:58 +0100 | jludwig | (~justin@li657-110.members.linode.com) |
2022-11-04 11:33:06 +0100 | nate3 | (~nate@98.45.169.16) |
2022-11-04 11:35:32 +0100 | Kaipei | (~Kaiepi@108.175.84.104) (Ping timeout: 248 seconds) |
2022-11-04 11:36:18 +0100 | acidjnk | (~acidjnk@p200300d6e7137a51b1aa0752e3eaff2e.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2022-11-04 11:37:49 +0100 | nate3 | (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
2022-11-04 11:39:51 +0100 | __monty__ | (~toonn@user/toonn) (Ping timeout: 255 seconds) |
2022-11-04 11:45:49 +0100 | hugo1 | (~hugo@145.136.129.212) |
2022-11-04 11:46:32 +0100 | __monty__ | (~toonn@user/toonn) |
2022-11-04 11:51:48 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:f5b1:39e2:deb2:275) |
2022-11-04 11:58:31 +0100 | king_gs | (~Thunderbi@187.201.83.115) |
2022-11-04 11:59:00 +0100 | chomwitt | (~chomwitt@ppp-94-69-177-170.home.otenet.gr) (Ping timeout: 248 seconds) |
2022-11-04 12:09:03 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) |
2022-11-04 12:10:52 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) |
2022-11-04 12:11:54 +0100 | jinsun | (~jinsun@user/jinsun) |
2022-11-04 12:14:03 +0100 | ubert1 | (~Thunderbi@178.115.71.138.wireless.dyn.drei.com) (Ping timeout: 255 seconds) |
2022-11-04 12:15:41 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) (Ping timeout: 276 seconds) |
2022-11-04 12:16:05 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Ping timeout: 246 seconds) |
2022-11-04 12:17:30 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-04 12:21:38 +0100 | Guest|51 | (~Guest|51@95.10.63.122) |
2022-11-04 12:22:11 +0100 | Guest|51 | (~Guest|51@95.10.63.122) (Client Quit) |
2022-11-04 12:24:22 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2022-11-04 12:24:51 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
2022-11-04 12:29:30 +0100 | <merijn> | Once again the Haskell Survey question on extensions is a mess that forces kinda misleading answers |
2022-11-04 12:30:15 +0100 | king_gs | (~Thunderbi@187.201.83.115) (Read error: Connection reset by peer) |
2022-11-04 12:31:48 +0100 | king_gs | (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) |
2022-11-04 12:33:20 +0100 | <[exa]> | and prolog is again missing |
2022-11-04 12:34:22 +0100 | LarchOye1 | (nonmoose@2604:2d80:6789:9100:b1fe:b223:d6bb:6b68) |
2022-11-04 12:34:36 +0100 | LarchOye1 | (nonmoose@2604:2d80:6789:9100:b1fe:b223:d6bb:6b68) () |
2022-11-04 12:36:44 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2022-11-04 12:38:04 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-11-04 12:38:08 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
2022-11-04 12:39:35 +0100 | <AndreasK> | merijn: In what way? |
2022-11-04 12:42:02 +0100 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
2022-11-04 12:42:02 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
2022-11-04 12:43:00 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-11-04 12:43:34 +0100 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) |
2022-11-04 12:44:13 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-11-04 12:44:32 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-04 12:44:58 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Ping timeout: 246 seconds) |
2022-11-04 12:45:30 +0100 | pitiK3U | (~Piti@user/pitiK3U) |
2022-11-04 12:45:51 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-04 12:48:00 +0100 | tureba | (~tureba@tureba.org) (Ping timeout: 268 seconds) |
2022-11-04 12:51:06 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds) |
2022-11-04 12:52:18 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Ping timeout: 255 seconds) |
2022-11-04 12:52:46 +0100 | kuribas | (~user@2a02:1810:2825:6000:75a5:ce7d:3131:4615) |
2022-11-04 12:54:28 +0100 | hueso | (~root@user/hueso) (Ping timeout: 248 seconds) |
2022-11-04 12:55:58 +0100 | acidjnk | (~acidjnk@p200300d6e7137a51b1aa0752e3eaff2e.dip0.t-ipconnect.de) |
2022-11-04 12:58:01 +0100 | hueso | (~root@user/hueso) |
2022-11-04 13:00:28 +0100 | fserucas | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 255 seconds) |
2022-11-04 13:00:28 +0100 | fserucas_ | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 255 seconds) |
2022-11-04 13:07:01 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 13:08:39 +0100 | <dminuoso> | Regarding setSocketCloseOnExec: https://github.com/mzero/plush/blob/master/src/Plush/Server/Warp.hs |
2022-11-04 13:09:00 +0100 | <dminuoso> | Why exactly would it be necessary to set close on exec on the socket? |
2022-11-04 13:09:33 +0100 | <dminuoso> | Ive went through the manual pages of open(2) and socket(2) a few times, but the wording is way too abstract for me to come up with concrete examples why not doing this could be problematic |
2022-11-04 13:10:22 +0100 | CiaoSen | (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2022-11-04 13:11:32 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
2022-11-04 13:12:38 +0100 | <dminuoso> | It seems to cause problems, the haskell server code would have to `fork` first (which already seems notoriously unsafe with GHC RTS), in which case the forked process would have a valid file descriptor to my socket in the haskell server |
2022-11-04 13:14:01 +0100 | <dminuoso> | The thing that confuses me most, is the wording in the haddock documentation "into processes fork/exec'ed by the shell". Surely running `my-haskell-server&` in a shell will not leak the file descriptor to the outside shell |
2022-11-04 13:16:09 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds) |
2022-11-04 13:17:05 +0100 | <tomsmeding> | dminuoso: isn't the idea of close-on-exec that child processes you start don't inherit the socket? |
2022-11-04 13:17:53 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2022-11-04 13:18:26 +0100 | <dminuoso> | Right, but the only way this would ever be a problem in haskell if you used forkProcesses, in which case you're already insane. |
2022-11-04 13:19:02 +0100 | <tomsmeding> | dminuoso: doesn't the same happen through other ways of spawning processes? |
2022-11-04 13:19:11 +0100 | <tomsmeding> | e.g. System.Process stuff |
2022-11-04 13:19:57 +0100 | <tomsmeding> | I've been using withCreateProcess and fd's were inherited |
2022-11-04 13:20:31 +0100 | Kaipei | (~Kaiepi@108.175.84.104) |
2022-11-04 13:21:06 +0100 | <dminuoso> | I find forking to be a really strange concept that wont make sense. |
2022-11-04 13:21:25 +0100 | <dminuoso> | But anyway, I suppose withCreateProcess will end up calling execve or some such, uh? |
2022-11-04 13:21:32 +0100 | <tomsmeding> | one need not fork to get this |
2022-11-04 13:21:36 +0100 | <tomsmeding> | it will use posix_spawn |
2022-11-04 13:21:49 +0100 | <tomsmeding> | (if available, otherwise vfork/exec iirc) |
2022-11-04 13:21:54 +0100 | <dminuoso> | Okay, but close-on-exec wouldnt affect that. |
2022-11-04 13:21:59 +0100 | <dminuoso> | Only if exec was used. |
2022-11-04 13:22:07 +0100 | <dminuoso> | close-on-exec is documented to only affect fork/exec calls. |
2022-11-04 13:22:14 +0100 | <tomsmeding> | really? |
2022-11-04 13:22:33 +0100 | <dminuoso> | Hold on |
2022-11-04 13:22:42 +0100 | <tomsmeding> | dminuoso: from the posix_spawn manpage: "3. File descriptors with the FD_CLOEXEC flag set are closed." |
2022-11-04 13:22:55 +0100 | <tomsmeding> | otherwise CLOEXEC would be utterly useless |
2022-11-04 13:23:00 +0100 | <tomsmeding> | well not utterly, but very |
2022-11-04 13:23:31 +0100 | fserucas | (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) |
2022-11-04 13:23:33 +0100 | <dminuoso> | No this is a glibc documentation bug then possibly |
2022-11-04 13:23:35 +0100 | <dminuoso> | https://www.gnu.org/software/libc/manual/html_node/Descriptor-Flags.html |
2022-11-04 13:23:41 +0100 | <dminuoso> | This flag specifies that the file descriptor should be closed when an exec function is invoked; see Executing a File. |
2022-11-04 13:23:43 +0100 | fserucas_ | (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) |
2022-11-04 13:23:53 +0100 | <dminuoso> | https://www.gnu.org/software/libc/manual/html_node/Executing-a-File.html |
2022-11-04 13:24:08 +0100 | <tomsmeding> | you know what's another glibc documentation bug? can write(2) return 0 on a non-O_NONBLOCK fd |
2022-11-04 13:24:08 +0100 | <dminuoso> | Sorry, I had this documentation in mind |
2022-11-04 13:24:40 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-04 13:24:57 +0100 | dminuoso | does not want to depend on `unix` just to set close on exec... :( |
2022-11-04 13:25:00 +0100 | Patternmaster | (~georg@user/Patternmaster) (Ping timeout: 268 seconds) |
2022-11-04 13:25:02 +0100 | <tomsmeding> | right, that could take clarification |
2022-11-04 13:25:20 +0100 | <tomsmeding> | though posix_spawn is documented as simulating a specific usecase of fork/exec |
2022-11-04 13:25:45 +0100 | <tomsmeding> | I've also gotten error codes from posix_spawn that are not documented as possible codes |
2022-11-04 13:25:54 +0100 | <dminuoso> | "In fact, they provide only a subset of the functionality that can be achieved by using the system calls." |
2022-11-04 13:26:04 +0100 | <tomsmeding> | I think taking statements like this to exclude all other possibilities is fraught in unix documentation |
2022-11-04 13:26:05 +0100 | <dminuoso> | Which really reads as "please read both manuals side-by-side and figure out the differences" |
2022-11-04 13:26:26 +0100 | <tomsmeding> | no, it means "the relation is only on a high level, the implementation is completely separate, read this manual page in full" |
2022-11-04 13:26:35 +0100 | <dminuoso> | fair enough |
2022-11-04 13:26:38 +0100 | Guest75 | (~Guest75@178.141.177.81) (Ping timeout: 260 seconds) |
2022-11-04 13:26:39 +0100 | <tomsmeding> | this documentation is not maths, unfortunately |
2022-11-04 13:26:48 +0100 | <tomsmeding> | but getting it watertight would blow up size by 10x probably |
2022-11-04 13:26:51 +0100 | <tomsmeding> | also not ideal |
2022-11-04 13:27:13 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 13:27:29 +0100 | <dminuoso> | But actually... mmm. I want signal handling anyway. So `unix` it is. |
2022-11-04 13:31:53 +0100 | <tomsmeding> | dminuoso: it's a boot lib, it's not that bad |
2022-11-04 13:32:11 +0100 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8) |
2022-11-04 13:32:12 +0100 | paddymahoney | (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) |
2022-11-04 13:32:12 +0100 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-11-04 13:32:18 +0100 | pitiK3U | (~Piti@user/pitiK3U) (Read error: Connection reset by peer) |
2022-11-04 13:32:42 +0100 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) |
2022-11-04 13:32:48 +0100 | xff0x | (~xff0x@2405:6580:b080:900:dde7:2b6c:97ae:a5eb) |
2022-11-04 13:33:09 +0100 | <tomsmeding> | most of the things in the manpage for a function will actually happen |
2022-11-04 13:33:21 +0100 | <tomsmeding> | but if it's not in the manpage, it might still happen! :D |
2022-11-04 13:33:39 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-11-04 13:34:46 +0100 | jonathanx_ | (~jonathan@c-5eea602c-74736162.cust.telenor.se) |
2022-11-04 13:35:16 +0100 | <merijn> | dminuoso: Time to buy the book I keep telling everyone about |
2022-11-04 13:35:18 +0100 | <merijn> | dminuoso: No |
2022-11-04 13:35:25 +0100 | <merijn> | dminuoso: You don't want signal handling >.< |
2022-11-04 13:35:53 +0100 | <merijn> | you just think you do, because it seems like something that, you know, sane semantics |
2022-11-04 13:36:00 +0100 | <merijn> | Instead of being an eldritch nightmare |
2022-11-04 13:37:22 +0100 | [Leary] | (~Leary]@user/Leary/x-0910699) (Remote host closed the connection) |
2022-11-04 13:37:25 +0100 | <dminuoso> | No I do want it. |
2022-11-04 13:37:41 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 272 seconds) |
2022-11-04 13:37:42 +0100 | <dminuoso> | I kind of like a controlled graceful shutdown on SIGINT/SIGTERM. |
2022-11-04 13:37:44 +0100 | [Leary] | (~Leary]@user/Leary/x-0910699) |
2022-11-04 13:37:59 +0100 | <merijn> | Well, you can't have that in Haskell, atm :p |
2022-11-04 13:38:04 +0100 | <dminuoso> | Sure I can,. |
2022-11-04 13:38:16 +0100 | <dminuoso> | It may not behave well in exotic edge cases, but in practice it does work. |
2022-11-04 13:38:41 +0100 | acidjnk | (~acidjnk@p200300d6e7137a51b1aa0752e3eaff2e.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2022-11-04 13:40:33 +0100 | <merijn> | dminuoso: Anyway, time to invest in a copy of APUE ;) |
2022-11-04 13:40:39 +0100 | <dminuoso> | Mmm, its actually on my shelf |
2022-11-04 13:41:16 +0100 | <merijn> | That coulda answered all your CLOEXEC like questions :p |
2022-11-04 13:42:55 +0100 | abhiroop | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
2022-11-04 13:43:50 +0100 | [Leary] | (~Leary]@user/Leary/x-0910699) (Remote host closed the connection) |
2022-11-04 13:44:09 +0100 | [Leary] | (~Leary]@user/Leary/x-0910699) |
2022-11-04 13:45:20 +0100 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) |
2022-11-04 13:47:41 +0100 | hugo1 | (~hugo@145.136.129.212) (Quit: WeeChat 3.5) |
2022-11-04 13:47:59 +0100 | Neuromancer | (~Neuromanc@user/neuromancer) (Quit: Going offline, see ya! (www.adiirc.com)) |
2022-11-04 13:59:00 +0100 | razetime | (~quassel@117.254.35.246) (Ping timeout: 248 seconds) |
2022-11-04 13:59:57 +0100 | simendsjo | (~user@84.211.91.241) |
2022-11-04 14:00:47 +0100 | jonathanx__ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-11-04 14:01:36 +0100 | causal | (~user@50.35.83.177) (Quit: WeeChat 3.7.1) |
2022-11-04 14:03:16 +0100 | jonathanx_ | (~jonathan@c-5eea602c-74736162.cust.telenor.se) (Ping timeout: 248 seconds) |
2022-11-04 14:06:26 +0100 | simendsjo | (~user@84.211.91.241) (Remote host closed the connection) |
2022-11-04 14:13:00 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) |
2022-11-04 14:16:32 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2022-11-04 14:17:21 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) (Ping timeout: 255 seconds) |
2022-11-04 14:22:48 +0100 | <merijn> | Someone at the Haskell Survey also needs to update where they're getting their country list from... |
2022-11-04 14:22:55 +0100 | <merijn> | "Netherland Antilles"?? |
2022-11-04 14:23:13 +0100 | <merijn> | Those haven't existed for well over a decade now |
2022-11-04 14:26:01 +0100 | nschoe | (~q@141.101.51.197) |
2022-11-04 14:26:54 +0100 | <vpan> | hi, is it possible to skip records when parsing using cassava? https://hackage.haskell.org/package/cassava-0.5.3.0/docs/Data-Csv.html#t:FromRecord mentions `empty`, `mzero`, `fail`, but I can't find a way to indicate skipping instead of failure. I could filter after loading all records, but that feels like a workaround. |
2022-11-04 14:29:31 +0100 | <kuribas> | vpan: no, you'll need to filter after parsing. |
2022-11-04 14:29:45 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
2022-11-04 14:31:56 +0100 | <tomsmeding> | merijn: I recently made an account somewhere that had a country list with the antilles included, but something like "(formerly)" appended |
2022-11-04 14:32:49 +0100 | Sauvin | (~sauvin@user/Sauvin) (Quit: Leaving) |
2022-11-04 14:33:24 +0100 | <__monty__> | vpan: Though through things like fusion "filtering after parsing" may actually happen during parsing. |
2022-11-04 14:34:16 +0100 | marienz | (~marienz@libera/staff/marienz) (Ping timeout: 615 seconds) |
2022-11-04 14:35:26 +0100 | tomku | (~tomku@user/tomku) |
2022-11-04 14:35:39 +0100 | Sauvin | (~sauvin@user/Sauvin) |
2022-11-04 14:36:00 +0100 | <vpan> | __monty__: sounds interesting, but I'm implementing my first application in Haskell, so I think I should maybe leave fusion alone for a while :) |
2022-11-04 14:36:13 +0100 | <merijn> | tomsmeding: I see the Netherlands Antilles in many places, which makes me kinda curious were people are getting these wildly outdated country lists (and what else is wrong on them) |
2022-11-04 14:39:01 +0100 | <kuribas> | vpan: you don't have a choice :) |
2022-11-04 14:40:43 +0100 | <vpan> | well then, as long as it's not cold fusion... |
2022-11-04 14:41:13 +0100 | marienz | (~marienz@libera/staff/marienz) |
2022-11-04 14:41:43 +0100 | <__monty__> | vpan: It's just something that can happen in the background and is a good thing when it does. Makes certain things that look inefficient efficient. |
2022-11-04 14:44:12 +0100 | <vpan> | __monty__: ok, then that sounds like a kind of optimization. I don't think I've heard fusion in Haskell context, so I assumed "if you don't know fusion, you don't need it". :) |
2022-11-04 14:45:49 +0100 | <geekosaur> | sometimes you do need to rearrange code to encourage it to happen, but 90+% of the time the compiler does it for you |
2022-11-04 14:46:05 +0100 | <geekosaur> | and the times it doesn't are usually worth bug reports somewhere |
2022-11-04 14:46:28 +0100 | motherfsck | (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
2022-11-04 14:46:41 +0100 | paddymahoney | (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Remote host closed the connection) |
2022-11-04 14:47:19 +0100 | shriekingnoise | (~shrieking@186.137.167.202) |
2022-11-04 14:48:57 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-11-04 14:49:03 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-11-04 14:50:35 +0100 | kuribas | (~user@2a02:1810:2825:6000:75a5:ce7d:3131:4615) (Quit: ERC (IRC client for Emacs 27.1)) |
2022-11-04 14:51:24 +0100 | king_gs | (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Quit: king_gs) |
2022-11-04 14:51:30 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 14:52:11 +0100 | thyriaen | (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection) |
2022-11-04 14:52:55 +0100 | acidjnk | (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) |
2022-11-04 14:53:01 +0100 | chomwitt | (~chomwitt@athedsl-351939.home.otenet.gr) |
2022-11-04 14:54:56 +0100 | wand | (~user@gateway/tor-sasl/wand) |
2022-11-04 14:56:04 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
2022-11-04 14:58:49 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 14:59:12 +0100 | Xeroine | (~Xeroine@user/xeroine) (Ping timeout: 246 seconds) |
2022-11-04 14:59:51 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2022-11-04 15:00:10 +0100 | motherfsck | (~motherfsc@user/motherfsck) |
2022-11-04 15:03:22 +0100 | megaTherion | (~therion@unix.io) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-11-04 15:05:01 +0100 | Heyting | (~Heyting@193.198.16.217) |
2022-11-04 15:05:07 +0100 | megaTherion | (~therion@unix.io) |
2022-11-04 15:05:30 +0100 | Heyting | (~Heyting@193.198.16.217) (Client Quit) |
2022-11-04 15:09:55 +0100 | dcoutts_ | (~duncan@host81-156-211-157.range81-156.btcentralplus.com) |
2022-11-04 15:10:36 +0100 | Heyting | (~Heyting@193.198.16.217) |
2022-11-04 15:10:59 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
2022-11-04 15:11:46 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-11-04 15:12:36 +0100 | dcoutts | (~duncan@host81-156-211-157.range81-156.btcentralplus.com) (Ping timeout: 248 seconds) |
2022-11-04 15:18:56 +0100 | dcoutts__ | (~duncan@host81-156-211-157.range81-156.btcentralplus.com) |
2022-11-04 15:21:42 +0100 | dcoutts_ | (~duncan@host81-156-211-157.range81-156.btcentralplus.com) (Ping timeout: 255 seconds) |
2022-11-04 15:22:14 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
2022-11-04 15:22:22 +0100 | thegeekinside | (~thegeekin@189.180.115.115) |
2022-11-04 15:24:24 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-11-04 15:25:24 +0100 | dcoutts_ | (~duncan@host81-156-211-157.range81-156.btcentralplus.com) |
2022-11-04 15:28:00 +0100 | dcoutts__ | (~duncan@host81-156-211-157.range81-156.btcentralplus.com) (Ping timeout: 255 seconds) |
2022-11-04 15:29:52 +0100 | juri_ | (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 250 seconds) |
2022-11-04 15:30:45 +0100 | razetime | (~quassel@117.254.35.246) |
2022-11-04 15:33:56 +0100 | shachaf | (~shachaf@user/shachaf) (Ping timeout: 276 seconds) |
2022-11-04 15:34:12 +0100 | nate3 | (~nate@98.45.169.16) |
2022-11-04 15:36:02 +0100 | juri_ | (~juri@84.19.175.179) |
2022-11-04 15:36:24 +0100 | irrgit_ | (~irrgit@146.70.27.250) |
2022-11-04 15:39:17 +0100 | nate3 | (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
2022-11-04 15:40:55 +0100 | dcoutts__ | (~duncan@host109-149-38-108.range109-149.btcentralplus.com) |
2022-11-04 15:43:16 +0100 | kenran | (~user@user/kenran) (Remote host closed the connection) |
2022-11-04 15:43:43 +0100 | dcoutts_ | (~duncan@host81-156-211-157.range81-156.btcentralplus.com) (Ping timeout: 272 seconds) |
2022-11-04 15:45:59 +0100 | tureba | (~tureba@tureba.org) |
2022-11-04 15:46:17 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-04 15:48:21 +0100 | nisstyre | (wes@user/nisstyre) |
2022-11-04 15:48:41 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2022-11-04 15:51:14 +0100 | dcoutts | (~duncan@host109-149-38-108.range109-149.btcentralplus.com) |
2022-11-04 15:53:39 +0100 | dcoutts__ | (~duncan@host109-149-38-108.range109-149.btcentralplus.com) (Ping timeout: 255 seconds) |
2022-11-04 15:54:54 +0100 | dcoutts_ | (~duncan@host109-149-38-108.range109-149.btcentralplus.com) |
2022-11-04 15:54:58 +0100 | shachaf | (~shachaf@user/shachaf) |
2022-11-04 15:55:05 +0100 | tolt | (~weechat-h@li219-154.members.linode.com) |
2022-11-04 15:56:53 +0100 | abhiroop | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Remote host closed the connection) |
2022-11-04 15:57:16 +0100 | abhiroop | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
2022-11-04 15:57:42 +0100 | dcoutts | (~duncan@host109-149-38-108.range109-149.btcentralplus.com) (Ping timeout: 255 seconds) |
2022-11-04 16:01:08 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
2022-11-04 16:02:51 +0100 | Heyting | (~Heyting@193.198.16.217) (Quit: Connection closed) |
2022-11-04 16:06:44 +0100 | SridharRatnakuma | (~sridmatri@2001:470:69fc:105::1c2) |
2022-11-04 16:08:42 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-11-04 16:09:51 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 255 seconds) |
2022-11-04 16:14:58 +0100 | <lortabac> | I have a memory leak that is (for various reasons) impossible to reproduce locally. Is it a bad idea to run the profiler in production? |
2022-11-04 16:15:58 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-11-04 16:16:09 +0100 | <merijn> | Depends, are performance regression in production a problem? |
2022-11-04 16:16:14 +0100 | wand | (~user@gateway/tor-sasl/wand) (Ping timeout: 255 seconds) |
2022-11-04 16:16:21 +0100 | <merijn> | i.e. "define production" |
2022-11-04 16:17:17 +0100 | <lortabac> | production is what the customers are actually using |
2022-11-04 16:17:37 +0100 | <lortabac> | a little performance regression is not a problem |
2022-11-04 16:17:52 +0100 | <merijn> | I would not assume "little" |
2022-11-04 16:17:53 +0100 | <lortabac> | it's a low-traffic service |
2022-11-04 16:18:01 +0100 | <merijn> | You can easily have 10x slowdown |
2022-11-04 16:18:38 +0100 | <lortabac> | erm... I think 10x would not be acceptable |
2022-11-04 16:19:04 +0100 | <lortabac> | up to 2x-3x I would say it's ok |
2022-11-04 16:19:15 +0100 | <merijn> | Then it's probably not a great idea in production unless you test how big the impact is first :p |
2022-11-04 16:19:44 +0100 | <lortabac> | I imagined the profiler to have a smaller impact |
2022-11-04 16:19:56 +0100 | <jlgw_> | lortabac: Maybe you can set up a staging environment? |
2022-11-04 16:20:22 +0100 | <lortabac> | we already have various environments, but the leak is only visible in production |
2022-11-04 16:20:35 +0100 | Franciman | (~Franciman@mx1.fracta.dev) |
2022-11-04 16:21:55 +0100 | vpan | (~0@212.117.1.172) (Quit: Leaving.) |
2022-11-04 16:21:55 +0100 | jludwig | (~justin@li657-110.members.linode.com) (Quit: ZNC - https://znc.in) |
2022-11-04 16:22:18 +0100 | CiaoSen | (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-11-04 16:22:54 +0100 | jludwig | (~justin@li657-110.members.linode.com) |
2022-11-04 16:24:04 +0100 | <merijn> | lortabac: the profiler needs cost centers which inhibits certain optimisations |
2022-11-04 16:24:29 +0100 | <merijn> | So depending on how crucial those are for your performance you might have MASSIVE regression or "hardly any" |
2022-11-04 16:27:29 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 16:27:52 +0100 | <lortabac> | merijn: thanks, I will try to avoid profiling in production for the moment |
2022-11-04 16:28:07 +0100 | econo | (uid147250@user/econo) |
2022-11-04 16:28:25 +0100 | <lortabac> | if I really need it, I will get some performance data first |
2022-11-04 16:28:43 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2022-11-04 16:28:44 +0100 | <merijn> | lortabac: There's some work on other ways to profile nowadays too, e.g., DWARF symbols |
2022-11-04 16:28:49 +0100 | <merijn> | which should have less/no overhead |
2022-11-04 16:29:00 +0100 | <merijn> | but you have to consult the GHC user guide for details |
2022-11-04 16:32:14 +0100 | abhiroop_ | (~abhiroop@c-5eea67ce-74736162.cust.telenor.se) |
2022-11-04 16:32:29 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
2022-11-04 16:33:08 +0100 | abhiroop | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 248 seconds) |
2022-11-04 16:33:39 +0100 | <lortabac> | I don't think I can get a heap profile with DWARF, can I? |
2022-11-04 16:34:28 +0100 | <merijn> | ah, yeah, I guess not |
2022-11-04 16:34:36 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) |
2022-11-04 16:38:03 +0100 | <simple> | tfw you come to programming channel, and fear asking a bad question so much that you google it a bit more to be able to refer to it with better words, and you end up solving it yourself |
2022-11-04 16:38:34 +0100 | <geekosaur> | we don't bite 🙂 the only bad question is the one that isn't asked |
2022-11-04 16:41:21 +0100 | <simple> | I do wonder if i did it the best way though. I'm building a server that can accept multiple connections, and needs to track state. Before you comment on that, I'm just trying to capture the time of startup in a (gasp) global variable in module Main, so i can hPutStr something like 'this server was started at 2022-11-04 08:41:24' |
2022-11-04 16:42:05 +0100 | <simple> | since time is an IO monady thingy, it made it a bit difficult.. |
2022-11-04 16:42:38 +0100 | <c_wraith> | does it need to be global, or just available to your connection handlers? |
2022-11-04 16:43:09 +0100 | <simple> | well, there are a few different functions that would need it, but not many |
2022-11-04 16:43:19 +0100 | <merijn> | MVar/IORef? |
2022-11-04 16:43:40 +0100 | <simple> | i come from a Perl background, so that probably helps you with my thought process |
2022-11-04 16:45:25 +0100 | jtomas | (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 246 seconds) |
2022-11-04 16:45:26 +0100 | <simple> | serverStartTime :: () -> Int \n serverStartTime () = do \n now <- getCurrentTime \n show now |
2022-11-04 16:45:47 +0100 | <simple> | it compiles, at least.. |
2022-11-04 16:45:51 +0100 | <lortabac> | simple: can't you just pass 'now' to all the functions that need it? |
2022-11-04 16:45:59 +0100 | <c_wraith> | While it's possible to create global variables, it's.. dangerous. Haskell really isn't intended to work that way, so there are a lot of pitfalls; places the compiler might do something weird because it's designed with the assumption that top-level values are pure and immutable. |
2022-11-04 16:46:27 +0100 | <merijn> | simple: eh, it is *highly* suspicious that compiles :p |
2022-11-04 16:46:34 +0100 | <merijn> | Can you pastebin the entire main? |
2022-11-04 16:46:35 +0100 | <simple> | yeah.. it doesn't, sorry |
2022-11-04 16:47:01 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 16:47:03 +0100 | <simple> | i guess i didn't finish it last night when my eyes were falling shut |
2022-11-04 16:47:21 +0100 | <c_wraith> | It's much more common to be explicit about these things and pass values around as needed. Maybe a bunch of them packaged up together into an Environment type that could hold a bunch of these concerns |
2022-11-04 16:47:35 +0100 | <simple> | i can pastebin the whole thing, it's an attempt at building a whole IRCD in Haskell |
2022-11-04 16:48:27 +0100 | <merijn> | simple: I mean, I'd just do "getCurrentTime" in main and pass the result to any further code, as lortabac suggests |
2022-11-04 16:48:43 +0100 | <simple> | https://paste.tomsmeding.com/SCbGYyLi |
2022-11-04 16:49:30 +0100 | <simple> | i'm pretty sure there's a lot of naive code in that pastebin right now |
2022-11-04 16:50:08 +0100 | <merijn> | simple: I mean, why can't the current time be an argument to "premotd" (via an extra argument to processConnect)? |
2022-11-04 16:50:26 +0100 | <simple> | i don't want the current time, i want the time that the server started |
2022-11-04 16:50:31 +0100 | <merijn> | simple: Yes |
2022-11-04 16:51:16 +0100 | <merijn> | simple: You just do "now <- getCurrentTime" after the ' putStrLn "Listening on 6667..."' and pass 'now' as extra argument to processConnect? |
2022-11-04 16:52:10 +0100 | <simple> | then i would have to pass it around to everything else too in a dependency chain? |
2022-11-04 16:52:36 +0100 | <merijn> | Sure |
2022-11-04 16:52:46 +0100 | seriley | (~seriley@97-120-69-62.ptld.qwest.net) |
2022-11-04 16:52:59 +0100 | <merijn> | But how many places do you need to pass it too, seems like just one |
2022-11-04 16:53:33 +0100 | <geekosaur> | do you not have other top level state? I'd think you would have server configuration options |
2022-11-04 16:53:38 +0100 | <simple> | i understand that would work. it does feel awful weird to me though, having always used globally available variables |
2022-11-04 16:54:03 +0100 | <merijn> | simple: Global variables aren't really thing and global variables based on IO are even less of a thing |
2022-11-04 16:54:07 +0100 | <simple> | geekosaur: yeah, the plan is to create a settings file eventually, i was trying to hardcode it at the top |
2022-11-04 16:54:09 +0100 | <merijn> | Especially if you value sanity |
2022-11-04 16:54:31 +0100 | <merijn> | simple: Normally you'd define a Config datatype and use something like ReaderT to propagate the entire config type through your application |
2022-11-04 16:54:32 +0100 | <geekosaur> | we prefer to be explicit about it, so you always know what's available when. and these days globals are somewhat frowned upon even in languages that have them, just because they complicate reasoning about code |
2022-11-04 16:54:59 +0100 | <merijn> | And then everything just has a explicit Config argument |
2022-11-04 16:56:03 +0100 | simple | nods |
2022-11-04 16:56:20 +0100 | <simple> | that makes more sense, thank you merijn, geekosaur |
2022-11-04 16:56:46 +0100 | <simple> | c_wraith: documention somewhere about Environment type? |
2022-11-04 16:57:24 +0100 | <merijn> | simple: He just means what I said some custom ADT holding the config :p |
2022-11-04 16:57:25 +0100 | <geekosaur> | also if you plumb your config now it means you don't have to rewrite everything later when you want to add server config |
2022-11-04 16:57:39 +0100 | <simple> | merijn: this Config? https://hackage.haskell.org/package/config-value-0.8.3/docs/Config.html |
2022-11-04 16:58:41 +0100 | <simple> | probably not that link, ugh |
2022-11-04 16:58:44 +0100 | <geekosaur> | no, you'd define something specific to your application |
2022-11-04 16:59:07 +0100 | <merijn> | No, just a datatype you define for yourself, like "data Config = Config { serverUrl :: String, serverPort :: Int, serverStart :: Time, ... }" |
2022-11-04 16:59:55 +0100 | <simple> | that even makes it easier to hardcode it short-term. but i'll have to pass around that whole config instance too, right? |
2022-11-04 17:00:03 +0100 | Orbstheorem | (~orbstheor@2001:470:69fc:105::a56) (Quit: You have been kicked for being idle) |
2022-11-04 17:00:18 +0100 | <merijn> | simple: You'd pass around the whole config thing yes |
2022-11-04 17:00:23 +0100 | teo | (~teo@user/teo) (Ping timeout: 276 seconds) |
2022-11-04 17:00:34 +0100 | <geekosaur> | so, I'm one of the maintainers of xmonad, a window manager written in Haskell. we have an XConf holding te user config, a connection to the X server, and various other read-only configuration values. there's also an XState holding the read-write state such as the current workspace setup including which windows are on which workspaces |
2022-11-04 17:00:39 +0100 | <merijn> | And yes, it makes it trivial to hardcode things and then later replace the hardcoded thing with "loadConfig :: FilePath -> IO Config" |
2022-11-04 17:01:18 +0100 | <geekosaur> | newtype X a = StateT XState (ReaderT XConf IO) a |
2022-11-04 17:01:59 +0100 | <geekosaur> | and then everything that needs it is … -> X a for some relevant a |
2022-11-04 17:02:22 +0100 | razetime | (~quassel@117.254.35.246) (Read error: Connection reset by peer) |
2022-11-04 17:02:24 +0100 | <geekosaur> | and Haskell takes care of making sure everything gets an XState and XConf |
2022-11-04 17:02:36 +0100 | razetime | (~quassel@117.254.35.246) |
2022-11-04 17:03:02 +0100 | <simple> | that's still a little over my head. but i'm learning fast. it'd probably make sense to me in a week. |
2022-11-04 17:04:52 +0100 | <merijn> | simple: Pretend "(ReaderT XConf IO) a" in that is just "XConf -> IO a" :) |
2022-11-04 17:05:38 +0100 | <geekosaur> | @unmtl StateT XState (ReaderT XConf IO) a |
2022-11-04 17:05:38 +0100 | <lambdabot> | XState -> XConf -> IO (a, XState) |
2022-11-04 17:06:01 +0100 | <seriley> | in ghci, how can I determine what warnings are enabled? |
2022-11-04 17:06:56 +0100 | jtomas | (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) |
2022-11-04 17:08:09 +0100 | segfaultfizzbuzz | (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) |
2022-11-04 17:08:41 +0100 | <merijn> | simple: The other advantage is that it's fairly easy to add/remove fields to the config and immediately get errors when you're (trying to) use removed fields |
2022-11-04 17:09:25 +0100 | <merijn> | "ReaderT Config" has to be one of the pattern with the best "power/convenience-to-cost" ratios in Haskell |
2022-11-04 17:09:25 +0100 | abhiroop_ | (~abhiroop@c-5eea67ce-74736162.cust.telenor.se) (Read error: Connection reset by peer) |
2022-11-04 17:09:47 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
2022-11-04 17:09:56 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 248 seconds) |
2022-11-04 17:10:49 +0100 | <seriley> | oops! Found it...use :seti |
2022-11-04 17:12:39 +0100 | abhiroop_ | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
2022-11-04 17:12:56 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
2022-11-04 17:12:56 +0100 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
2022-11-04 17:13:03 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-11-04 17:13:06 +0100 | coot | (~coot@213.134.171.3) |
2022-11-04 17:13:08 +0100 | <c_wraith> | seriley: oh hey. Neat. I hadn't realized -fimplicit-import-qualified was an extension, but it's obvious what it does from how ghci works |
2022-11-04 17:13:09 +0100 | califax | (~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-11-04 17:13:24 +0100 | califax | (~califax@user/califx) |
2022-11-04 17:13:25 +0100 | <c_wraith> | well. a flag, not an extension |
2022-11-04 17:14:12 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Ping timeout: 248 seconds) |
2022-11-04 17:14:28 +0100 | <seriley> | Why isn't an incomplete patterns warning given for factorial :: Integer -> Integer;factorial 0 = 1;factorial n = n * factorial (n - 1)? |
2022-11-04 17:14:56 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-11-04 17:15:02 +0100 | <c_wraith> | it's not incomplete |
2022-11-04 17:15:08 +0100 | <c_wraith> | the second case catches everything |
2022-11-04 17:15:19 +0100 | <seriley> | factorial (-1)... |
2022-11-04 17:15:26 +0100 | <c_wraith> | it catches it |
2022-11-04 17:15:34 +0100 | <c_wraith> | and loops forever, but there's a pattern that handles it |
2022-11-04 17:15:53 +0100 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) |
2022-11-04 17:15:59 +0100 | ft | (~ft@p508dbd59.dip0.t-ipconnect.de) |
2022-11-04 17:16:04 +0100 | <seriley> | ok. I see now |
2022-11-04 17:16:22 +0100 | <geekosaur> | haskell isn't magic, it doesn't know your code will loop forever on a negative number |
2022-11-04 17:16:31 +0100 | <c_wraith> | Hmm. I suppose that only loops until you run out of memory, not "forever". :P |
2022-11-04 17:16:42 +0100 | <seriley> | i get a stack overflow |
2022-11-04 17:16:46 +0100 | <c_wraith> | yeah |
2022-11-04 17:16:58 +0100 | <c_wraith> | If it was an incomplete pattern match, you'd get an exception |
2022-11-04 17:17:18 +0100 | <c_wraith> | > let Just x = Nothing in x |
2022-11-04 17:17:20 +0100 | <lambdabot> | *Exception: <interactive>:3:5-20: Non-exhaustive patterns in Just x |
2022-11-04 17:17:37 +0100 | merijn | (~merijn@86.86.29.250) (Ping timeout: 246 seconds) |
2022-11-04 17:17:50 +0100 | <seriley> | thanks |
2022-11-04 17:27:15 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-04 17:33:22 +0100 | abhiroop_ | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 246 seconds) |
2022-11-04 17:33:46 +0100 | jonathanx_ | (~jonathan@c-5eea6015-74736162.cust.telenor.se) |
2022-11-04 17:33:55 +0100 | nschoe | (~q@141.101.51.197) (Ping timeout: 272 seconds) |
2022-11-04 17:35:29 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-04 17:36:27 +0100 | jonathanx__ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 272 seconds) |
2022-11-04 17:38:34 +0100 | jtza8 | (~user@165.255.137.137) |
2022-11-04 17:39:57 +0100 | tremon | (~tremon@83-84-18-241.cable.dynamic.v4.ziggo.nl) |
2022-11-04 17:42:35 +0100 | <simple> | I've done a 'cabal install network', and i use Network.Socket in my code, and 'cabal run' doesn't complain.. but i canot import Network.Socket in ghci.. any clues? |
2022-11-04 17:43:45 +0100 | <geekosaur> | if you're using cabal, you probably want cabal repl instead of ghci |
2022-11-04 17:44:37 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-04 17:46:23 +0100 | <simple> | geekosaur++ |
2022-11-04 17:47:01 +0100 | <simple> | bah, now i need to find where it keeps its .cabal file |
2022-11-04 17:48:23 +0100 | <c_wraith> | if you didn't create one, it's in /tmp and liable to be deleted at any time |
2022-11-04 17:48:43 +0100 | machinedgod | (~machinedg@83-131-151-179.adsl.net.t-com.hr) |
2022-11-04 17:48:48 +0100 | <simple> | on windows, looks like AppData/Local/Tmp/ stuff |
2022-11-04 17:49:31 +0100 | <c_wraith> | oh. windows, good point. But either way, my recommendation is to create your own package to work with |
2022-11-04 17:50:12 +0100 | <c_wraith> | global installs really aren't a good pattern, and really aren't supported anymore |
2022-11-04 17:50:34 +0100 | <c_wraith> | You can force them to work, but it's really fragile and liable to break |
2022-11-04 17:50:36 +0100 | <[exa]> | spoiler: everyone loves global installs for random hacking |
2022-11-04 17:50:56 +0100 | <simple> | I have (I think). I'm using IntelliJ Idea with a haskell plugin, in a project directory. if i run the ghci/repl from that dir, will it pick up the .cabal file? |
2022-11-04 17:51:01 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
2022-11-04 17:51:01 +0100 | OpenSource | (~kernel@user/OpenSource) (Quit: ZNC - https://znc.in) |
2022-11-04 17:51:11 +0100 | <c_wraith> | if you've created one there, yes |
2022-11-04 17:51:14 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:f5b1:39e2:deb2:275) (Quit: WeeChat 2.8) |
2022-11-04 17:51:17 +0100 | OpenSource | (~kernel@user/OpenSource) |
2022-11-04 17:51:30 +0100 | <c_wraith> | [exa]: but you can random hacking with cabal repl -b |
2022-11-04 17:52:15 +0100 | <[exa]> | yeah but that sounds like thinking about dependencies in advance :D |
2022-11-04 17:52:22 +0100 | <simple> | hm, the repl started by running my code, which is not what i wanted |
2022-11-04 17:52:30 +0100 | <[exa]> | anyway I didn't know about -b, thanks |
2022-11-04 17:52:47 +0100 | <c_wraith> | Yeah, I use it all the time. |
2022-11-04 17:52:55 +0100 | <[exa]> | simple: compiling or running? |
2022-11-04 17:53:04 +0100 | <c_wraith> | well. probably loading |
2022-11-04 17:54:18 +0100 | <[exa]> | is there some good syntax pattern to combine a few `do` blocks in a `choice [...]` ? |
2022-11-04 17:54:49 +0100 | sympt | (~sympt@user/sympt) |
2022-11-04 17:55:05 +0100 | <[exa]> | (or, more like, do something similar without the 2 sets of parentheses) |
2022-11-04 17:55:25 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-11-04 17:55:59 +0100 | OpenSource | (~kernel@user/OpenSource) (Client Quit) |
2022-11-04 17:56:26 +0100 | <simple> | yeah, loading |
2022-11-04 17:59:06 +0100 | <c_wraith> | Unfortunately, I don't know how to make it stop doing that. Sometimes it's not what I want, either |
2022-11-04 17:59:16 +0100 | acidjnk | (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2022-11-04 17:59:30 +0100 | <[exa]> | oh wait the inner do's don't need parentheses, good, world is saved. |
2022-11-04 17:59:46 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-11-04 18:00:38 +0100 | Patternmaster | (~georg@li1192-118.members.linode.com) |
2022-11-04 18:00:38 +0100 | Patternmaster | (~georg@li1192-118.members.linode.com) (Changing host) |
2022-11-04 18:00:38 +0100 | Patternmaster | (~georg@user/Patternmaster) |
2022-11-04 18:01:30 +0100 | ubert | (~Thunderbi@178.115.71.138.wireless.dyn.drei.com) (Quit: ubert) |
2022-11-04 18:01:49 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 18:02:34 +0100 | ubert | (~Thunderbi@178.115.71.138.wireless.dyn.drei.com) |
2022-11-04 18:06:04 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-04 18:06:12 +0100 | dtman34 | (~dtman34@c-75-73-141-79.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
2022-11-04 18:06:51 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
2022-11-04 18:06:51 +0100 | machinedgod | (~machinedg@83-131-151-179.adsl.net.t-com.hr) (Ping timeout: 272 seconds) |
2022-11-04 18:08:24 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 18:09:22 +0100 | abhiroop_ | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
2022-11-04 18:12:27 +0100 | razetime | (~quassel@117.254.35.246) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-11-04 18:12:52 +0100 | Guest75 | (~Guest75@178.141.177.81) |
2022-11-04 18:17:51 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-11.elisa-laajakaista.fi) |
2022-11-04 18:18:12 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 18:18:15 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
2022-11-04 18:18:37 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1) |
2022-11-04 18:18:53 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 18:20:10 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 18:20:28 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 18:21:05 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 18:21:24 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 18:21:59 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 18:25:01 +0100 | sadmax | (~user@209.205.174.253) (Client Quit) |
2022-11-04 18:26:41 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 18:28:24 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 18:28:32 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
2022-11-04 18:29:09 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 18:29:26 +0100 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
2022-11-04 18:29:50 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 18:30:24 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2022-11-04 18:30:40 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-11-04 18:30:40 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 18:30:47 +0100 | jonathanx__ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-11-04 18:31:18 +0100 | Kaipei | (~Kaiepi@108.175.84.104) (Ping timeout: 246 seconds) |
2022-11-04 18:31:43 +0100 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) |
2022-11-04 18:33:02 +0100 | jonathanx_ | (~jonathan@c-5eea6015-74736162.cust.telenor.se) (Ping timeout: 246 seconds) |
2022-11-04 18:33:50 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2022-11-04 18:35:31 +0100 | <EvanR> | if (| |) is banana brackets what is [| |] |
2022-11-04 18:35:52 +0100 | <EvanR> | hamburger bun brackets or |
2022-11-04 18:36:17 +0100 | <geekosaur[m]> | Coconut brackets? |
2022-11-04 18:36:23 +0100 | <dolio> | Those were envelopes, I think. |
2022-11-04 18:37:19 +0100 | <geekosaur[m]> | (SpongeBob brackets but can anyone over age 6 say that?) |
2022-11-04 18:37:41 +0100 | [exa] | writes that down |
2022-11-04 18:39:16 +0100 | <dolio> | I suppose it depends on how you ascii-fy the symbol in their paper. |
2022-11-04 18:39:39 +0100 | <dolio> | Could be [| or [[ |
2022-11-04 18:39:41 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 18:41:11 +0100 | <c_wraith> | I think I'd call what they used [[ and ]] |
2022-11-04 18:41:56 +0100 | <c_wraith> | has anyone successfully used a private library in a cabal file with no public library? When I try, it keeps telling me that it can't find the private library |
2022-11-04 18:42:19 +0100 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Remote host closed the connection) |
2022-11-04 18:42:47 +0100 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
2022-11-04 18:42:55 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-04 18:43:35 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Ping timeout: 272 seconds) |
2022-11-04 18:44:14 +0100 | slack1256 | (~slack1256@191.126.227.201) |
2022-11-04 18:45:23 +0100 | <slack1256> | On postgresql-simple, is anyone using ConnectInfo with unix sockets? |
2022-11-04 18:45:24 +0100 | fserucas | (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Quit: Leaving) |
2022-11-04 18:45:51 +0100 | <slack1256> | The libpq docs say that I should percent encode it, but maybe there is a better way using ConnectInfo. |
2022-11-04 18:47:32 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2022-11-04 18:47:33 +0100 | <slack1256> | Nevermind! I did not have to percent encode at all! |
2022-11-04 18:48:25 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2022-11-04 18:50:52 +0100 | <monochrom> | I have read that [| |] is called Oxford brackets. |
2022-11-04 18:51:21 +0100 | <monochrom> | Oh, probably I read that from the GHC user's guide. |
2022-11-04 18:52:45 +0100 | jpds1 | (~jpds@gateway/tor-sasl/jpds) (Write error: Connection reset by peer) |
2022-11-04 18:53:14 +0100 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2022-11-04 18:57:56 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-04 19:00:11 +0100 | nurupo | (~nurupo.ga@user/nurupo) (Quit: nurupo.ga) |
2022-11-04 19:00:15 +0100 | <EvanR> | an old post about why there is no gui library built into haskell https://mail.haskell.org/pipermail/haskell-cafe/2007-August/030191.html |
2022-11-04 19:00:27 +0100 | nurupo | (~nurupo.ga@user/nurupo) |
2022-11-04 19:01:16 +0100 | <EvanR> | they close suggesting maybe instead you want a way to come up with a custom gui for a given application, which makes me realize the "standard" libraries are really doing two separate (?) things, giving you a "standard" window with standard decorations and on the other hand trying to be a gui library |
2022-11-04 19:01:47 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-04 19:01:49 +0100 | <EvanR> | often you use the standard toolkit, get a standard decorated window, then make this huge custom thing because the library can't handle it |
2022-11-04 19:02:54 +0100 | <monochrom> | I remember Motif, heh. |
2022-11-04 19:03:13 +0100 | <EvanR> | I remember apps, never tried to make anything in it |
2022-11-04 19:03:43 +0100 | acidjnk | (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) |
2022-11-04 19:04:03 +0100 | <EvanR> | someone recently was saying athena widgets was the most amazing toolkit, still |
2022-11-04 19:04:31 +0100 | jpds1 | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-11-04 19:04:53 +0100 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2022-11-04 19:05:14 +0100 | <monochrom> | Guile is the idea of "DSL for describing UI object tree" standardized. |
2022-11-04 19:05:41 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2022-11-04 19:05:56 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
2022-11-04 19:06:19 +0100 | <monochrom> | To be sure, Guile came way after, and most likely independently thought up. |
2022-11-04 19:06:29 +0100 | <EvanR> | Guile is a what |
2022-11-04 19:06:38 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Ping timeout: 246 seconds) |
2022-11-04 19:06:42 +0100 | <c_wraith> | EvanR: I wouldn't say the things are separate, but they are totally different levels of abstraction |
2022-11-04 19:06:49 +0100 | <monochrom> | Guile is a DSL for decribing a tree of UI objects. :) |
2022-11-04 19:06:54 +0100 | stackdroid18 | (14094@user/stackdroid) |
2022-11-04 19:07:01 +0100 | <EvanR> | as a haskell library? lisp library? |
2022-11-04 19:07:17 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-04 19:07:21 +0100 | <monochrom> | No, I think Guile is for GTK. |
2022-11-04 19:07:36 +0100 | <EvanR> | shudder |
2022-11-04 19:07:40 +0100 | <monochrom> | Yeah GTK. |
2022-11-04 19:07:46 +0100 | <c_wraith> | not TK, GTK. :P |
2022-11-04 19:08:04 +0100 | <geekosaur> | guile predates gtk… |
2022-11-04 19:08:15 +0100 | <geekosaur> | that said, who remembers autolisp? |
2022-11-04 19:08:20 +0100 | <monochrom> | Well, this means that even the imperative people eventually discovered that "DSL for UI object tree" is a central idea. |
2022-11-04 19:08:32 +0100 | <c_wraith> | well, there are multiple things called guile |
2022-11-04 19:08:44 +0100 | <monochrom> | OK heh |
2022-11-04 19:08:48 +0100 | <c_wraith> | Like... the guy from Street Fighter |
2022-11-04 19:08:51 +0100 | <darkling> | geekosaur: Yes, I wrote a Bezier module for Autocad in Autolisp on a MicroVAX II. :) |
2022-11-04 19:09:05 +0100 | <monochrom> | Ah OK thanks geekosaur. |
2022-11-04 19:09:43 +0100 | <monochrom> | I guess this is why Guile uses s-expression syntax. |
2022-11-04 19:11:00 +0100 | <monochrom> | When I was in university and in microprocessor courses, Autocad was always mentioned as a performance benchmarking platform. |
2022-11-04 19:11:21 +0100 | <monochrom> | Things like "287 can render the cathedral in 10 seconds" :) |
2022-11-04 19:12:02 +0100 | <monochrom> | and "now, this other company's clone of 287 can do it in 9" |
2022-11-04 19:12:10 +0100 | <dolio> | I thought guile was just another scheme, for some reason. |
2022-11-04 19:12:24 +0100 | <EvanR> | that can't be the same guile |
2022-11-04 19:12:36 +0100 | <lagash> | GNU Guile? It's a Scheme. |
2022-11-04 19:12:39 +0100 | <darkling> | dolio: That too. |
2022-11-04 19:13:20 +0100 | <monochrom> | X_X |
2022-11-04 19:13:27 +0100 | <EvanR> | all this disproves Refl :: Guile = Guile |
2022-11-04 19:13:39 +0100 | <monochrom> | haha yeah |
2022-11-04 19:14:52 +0100 | CiaoSen | (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2022-11-04 19:15:32 +0100 | geekosaur | was under the impression that GNU had been reworking guile from its original "it's just another Scheme" to "it's the glue that holds stuff together" (with plans for it to replace elisp, etc.) |
2022-11-04 19:16:48 +0100 | <monochrom> | That probably will take another 100 years. Speaking of cathedrals. >:) |
2022-11-04 19:17:06 +0100 | cstml | (~cstml@user/cstml) (Ping timeout: 255 seconds) |
2022-11-04 19:19:04 +0100 | zeenk | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!) |
2022-11-04 19:21:47 +0100 | <lagash> | No no, use Common Lisp! :P |
2022-11-04 19:22:07 +0100 | ski | bites geekosaur tentatively |
2022-11-04 19:23:29 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2022-11-04 19:23:54 +0100 | <geekosaur> | moo? |
2022-11-04 19:24:00 +0100 | ski | . o O ( <https://www.emacswiki.org/emacs/GuileEmacs>,<https://www.emacswiki.org/emacs/Edwin>,<https://www.emacswiki.org/emacs/Zmacs>,<https://www.emacswiki.org/emacs/Climacs>,<https://www.emacswiki.org/emacs/XEmacs> ; <https://www.emacswiki.org/emacs/Emacsen>,<https://www.emacswiki.org/emacs/EmacsImplementations> ) |
2022-11-04 19:24:07 +0100 | <ski> | <geekosaur> we don't bite 🙂 the only bad question is the one that isn't asked |
2022-11-04 19:24:30 +0100 | narendraj9 | (~user@2a02:8109:b63f:c344::ff2a) |
2022-11-04 19:24:31 +0100 | <ski> | (er, rather <https://www.emacswiki.org/emacs/EdWin>) |
2022-11-04 19:25:56 +0100 | AlexNoo_ | (~AlexNoo@178.34.150.205) |
2022-11-04 19:26:14 +0100 | hiredman | (~hiredman@frontier1.downey.family) (Ping timeout: 246 seconds) |
2022-11-04 19:26:56 +0100 | <geekosaur> | wasn't some dialect of lisp or scheme what the original emacs was rewritten into? (the very first version being in TECO) |
2022-11-04 19:27:32 +0100 | Alex_test | (~al_test@178.34.163.109) (Ping timeout: 248 seconds) |
2022-11-04 19:27:51 +0100 | jtza8 | (~user@165.255.137.137) (ERC 5.4 (IRC client for GNU Emacs 28.2)) |
2022-11-04 19:28:04 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 248 seconds) |
2022-11-04 19:28:19 +0100 | <ski> | the current one (speaking of GNU Emacs, and i guess XEmacs) is written in Emacs Lisp (and C) |
2022-11-04 19:28:24 +0100 | beteigeuze | (~Thunderbi@89.187.168.55) |
2022-11-04 19:28:50 +0100 | AlexZenon | (~alzenon@178.34.163.109) (Ping timeout: 268 seconds) |
2022-11-04 19:28:51 +0100 | <ski> | (Scheme is a Lisp, btw) |
2022-11-04 19:29:23 +0100 | AlexNoo | (~AlexNoo@178.34.163.109) (Ping timeout: 246 seconds) |
2022-11-04 19:30:45 +0100 | <geekosaur> | yes, I know, but I distinguish them because of my history (MacLisp Scheme isn't 😛 ) |
2022-11-04 19:32:28 +0100 | <ski> | "Weinreb's EINE was the first Emacs written in Lisp.", apparently |
2022-11-04 19:32:52 +0100 | beteigeuze | (~Thunderbi@89.187.168.55) (Ping timeout: 248 seconds) |
2022-11-04 19:32:52 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
2022-11-04 19:33:12 +0100 | <monochrom> | A few days ago on Oct 31 I would bite. >:) |
2022-11-04 19:33:32 +0100 | <ski> | "Many versions of Emacs, including GNU Emacs, would later adopt Lisp as an extension language." |
2022-11-04 19:34:15 +0100 | Xeroine | (~Xeroine@user/xeroine) (Ping timeout: 272 seconds) |
2022-11-04 19:34:53 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Ping timeout: 272 seconds) |
2022-11-04 19:35:06 +0100 | AlexZenon | (~alzenon@178.34.150.205) |
2022-11-04 19:35:14 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-04 19:35:43 +0100 | nate3 | (~nate@98.45.169.16) |
2022-11-04 19:36:12 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Read error: Connection reset by peer) |
2022-11-04 19:36:42 +0100 | <ski> | seems like Stallman was inspired by an editor named E, making EMACS (TECO macros) |
2022-11-04 19:37:12 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-04 19:37:22 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2022-11-04 19:38:16 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-04 19:38:18 +0100 | Alex_test | (~al_test@178.34.150.205) |
2022-11-04 19:39:23 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-04 19:40:36 +0100 | nate3 | (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
2022-11-04 19:41:35 +0100 | abhiroop_ | (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 276 seconds) |
2022-11-04 19:44:26 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-04 19:45:00 +0100 | intelligent_boat | intellig1nt_boat |
2022-11-04 19:45:17 +0100 | intellig1nt_boat | intelligent_boat |
2022-11-04 19:45:55 +0100 | <cheater> | hey everyone |
2022-11-04 19:46:04 +0100 | <cheater> | what are your favourite quick check alikes nowadays? |
2022-11-04 19:50:19 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-04 19:51:01 +0100 | <sm> | how do you build a hoogle database for just the local package(s) in the current project ? |
2022-11-04 19:52:23 +0100 | ff76 | (~ff@ip183138.eafit.edu.co) |
2022-11-04 19:52:26 +0100 | <sm> | `hoogle generate --local` dies with "Packages missing documentation: array base binary ..." |
2022-11-04 19:52:42 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2022-11-04 19:53:10 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 19:53:22 +0100 | <sm> | `stack hoogle` builds a db for all transitive deps |
2022-11-04 19:53:38 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
2022-11-04 19:53:46 +0100 | jlgw_ | (~jw@83-233-104-81.cust.bredband2.com) (Quit: Konversation terminated!) |
2022-11-04 19:54:05 +0100 | jlgw_ | (~jw@83-233-104-81.cust.bredband2.com) |
2022-11-04 19:56:46 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-11-04 19:57:38 +0100 | acidjnk | (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) (Remote host closed the connection) |
2022-11-04 19:58:02 +0100 | acidjnk | (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) |
2022-11-04 20:00:33 +0100 | ff76 | (~ff@ip183138.eafit.edu.co) (Quit: Connection closed) |
2022-11-04 20:02:25 +0100 | Kaipei | (~Kaiepi@108.175.84.104) |
2022-11-04 20:06:04 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-11-04 20:07:28 +0100 | narendraj9 | (~user@2a02:8109:b63f:c344::ff2a) (Remote host closed the connection) |
2022-11-04 20:07:32 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
2022-11-04 20:08:26 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-04 20:08:27 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds) |
2022-11-04 20:09:34 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-04 20:09:47 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-11-04 20:10:42 +0100 | fserucas_ | (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Ping timeout: 246 seconds) |
2022-11-04 20:11:01 +0100 | <sm> | most relevant doc: https://github.com/ndmitchell/hoogle/blob/master/docs/Install.md#generate-a-hoogle-database |
2022-11-04 20:12:22 +0100 | dtman34 | (~dtman34@c-75-73-141-79.hsd1.mn.comcast.net) |
2022-11-04 20:13:03 +0100 | nschoe | (~q@2a01:e0a:8e:a190:2e2e:14c5:dca3:7fc5) |
2022-11-04 20:13:03 +0100 | nschoe | (~q@2a01:e0a:8e:a190:2e2e:14c5:dca3:7fc5) (Client Quit) |
2022-11-04 20:13:56 +0100 | jlgw_ | jlgw |
2022-11-04 20:14:41 +0100 | <c_wraith> | actually, scratch my last question. has anyone used cabal's private libraries feature at all? I cannot figure out how to make it work |
2022-11-04 20:15:58 +0100 | <sm> | hoogle is both famously useful online, and a perfect example of why haskell tooling makes grown humans weep bitter tears |
2022-11-04 20:18:29 +0100 | <sm> | c_wraith: maybe searching for the syntax will find some packages using it ? |
2022-11-04 20:18:55 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-11-04 20:18:55 +0100 | <sclv> | c_wraith: there's an example here, does it not work? https://cabal.readthedocs.io/en/stable/cabal-package.html?highlight=internal#sublibs |
2022-11-04 20:19:16 +0100 | <c_wraith> | my attempts at something like that do not work. |
2022-11-04 20:19:46 +0100 | <c_wraith> | that example itself is not complete, so it's not testable |
2022-11-04 20:20:16 +0100 | <sclv> | one important thing to do is to make sure you don't have overlapping srcdirs for your different sublibraries |
2022-11-04 20:20:22 +0100 | <sclv> | otherwise ghc gets very confused |
2022-11-04 20:20:37 +0100 | <sclv> | iirc |
2022-11-04 20:20:57 +0100 | <c_wraith> | did that. the problem is that cabal says it can't find the named internal library |
2022-11-04 20:22:41 +0100 | <sclv> | perhaps you need pkg:lib-name ? |
2022-11-04 20:23:01 +0100 | <sclv> | https://github.com/haskell/cabal/issues/7565 |
2022-11-04 20:24:24 +0100 | <c_wraith> | ah, that looks like the issue. I am using newer cabal specifications |
2022-11-04 20:25:09 +0100 | <sclv> | i'm not sure the exact status of how we sort that out, sigh. i think one of the underlying issues complained about is fixed in HEAD but idk how we'll iterate to final syntax or what that means for updating docs :-/ |
2022-11-04 20:25:19 +0100 | <c_wraith> | it'd sure be nice if the docs said something |
2022-11-04 20:25:42 +0100 | <sclv> | yeah, feel free to make a pr and if someone understands whats going on and objects we can solve it then :-) |
2022-11-04 20:26:19 +0100 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2022-11-04 20:26:39 +0100 | <c_wraith> | I'm really feeling like cabal repl is a third-class citizen. the amount I have to mangle my cabal file and project layout in order for it to work hurts. |
2022-11-04 20:27:16 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2022-11-04 20:27:33 +0100 | <sm> | "how can we keep docs updated" seems to be the root of many computing woes |
2022-11-04 20:28:47 +0100 | <sclv> | there's some discussion of improving mutihome support now that ghc has it https://github.com/haskell/cabal/issues/8491 |
2022-11-04 20:29:38 +0100 | <sclv> | note that ghci's multihome support is still a wip itself https://gitlab.haskell.org/ghc/ghc/-/issues/20889 |
2022-11-04 20:31:53 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-04 20:31:57 +0100 | Guest19 | (~Guest19@c83-248-102-237.bredband.tele2.se) |
2022-11-04 20:32:01 +0100 | <c_wraith> | while you're on this topic, is there any way to tell cabal repl to not load all the modules at startup? that can be very slow and unnecessary |
2022-11-04 20:33:36 +0100 | seriley | (~seriley@97-120-69-62.ptld.qwest.net) (Remote host closed the connection) |
2022-11-04 20:35:19 +0100 | <sclv> | --repl-no-load https://cabal.readthedocs.io/en/stable/cabal-commands.html#cabal-repl |
2022-11-04 20:35:27 +0100 | <c_wraith> | thanks |
2022-11-04 20:40:24 +0100 | <[exa]> | is there any good `choice` specialized to Eithers that would give either the first Right or the last Left from the list? |
2022-11-04 20:42:14 +0100 | <EvanR> | that condition is hurting my brain right now |
2022-11-04 20:42:29 +0100 | <EvanR> | Left Left Left Right Left would be what |
2022-11-04 20:42:54 +0100 | <sm> | headMay . rights / lastMay . lefts |
2022-11-04 20:43:25 +0100 | Guest98 | (~Guest98@92.40.70.67.threembb.co.uk) |
2022-11-04 20:43:28 +0100 | <[exa]> | EvanR: the first right |
2022-11-04 20:43:37 +0100 | Guest98 | (~Guest98@92.40.70.67.threembb.co.uk) (Client Quit) |
2022-11-04 20:44:00 +0100 | <EvanR> | is this a case of swapping the role of right and left and using the usual applicative |
2022-11-04 20:45:17 +0100 | acidjnk | (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
2022-11-04 20:45:24 +0100 | <EvanR> | in which case it seems retroactively smart to call them Left Right instead of the other languages which committed to Ok Error |
2022-11-04 20:46:00 +0100 | <[exa]> | perhaps well, this is my actual problem: if I use `choice` from Control.Applicative.Combinators, `choice [Left "asd"]` gets me `Left ""` because there's Error String instance |
2022-11-04 20:47:02 +0100 | <[exa]> | the normal choice from Control.Applicative (aka asum) reasonably refuses to do anything without importing the stuff from combinators |
2022-11-04 20:47:10 +0100 | <[exa]> | and I'm failing to find the piece of code that did this |
2022-11-04 20:48:36 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Ping timeout: 248 seconds) |
2022-11-04 20:48:56 +0100 | Guest47 | (~Guest47@171.79.46.173) |
2022-11-04 20:50:12 +0100 | shriekingnoise | (~shrieking@186.137.167.202) (Ping timeout: 255 seconds) |
2022-11-04 20:50:14 +0100 | Xeroine | (~Xeroine@user/xeroine) (Ping timeout: 246 seconds) |
2022-11-04 20:50:36 +0100 | Heyting | (~Heyting@193.198.16.217) |
2022-11-04 20:50:37 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2022-11-04 20:50:43 +0100 | <[exa]> | in short, making some kind of `choice` work without the ugly errorish instances on Either :D |
2022-11-04 20:51:20 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-11-04 20:51:22 +0100 | shriekingnoise | (~shrieking@186.137.167.202) |
2022-11-04 20:51:47 +0100 | Major_Biscuit | (~MajorBisc@c-001-021-035.client.tudelft.eduvpn.nl) (Ping timeout: 276 seconds) |
2022-11-04 20:52:24 +0100 | Guest|63 | (~Guest|63@90.203.229.51) |
2022-11-04 20:52:28 +0100 | biberu | (~biberu@user/biberu) |
2022-11-04 20:52:58 +0100 | <Heyting> | Good evening everyone, is there a list of "must read" Haskell papers, e.g. "Why functional programming matters?" and "Making ad-hoc polymorphism less ad-hoc"? I am looking to deepen my understanding of the Haskell and FP ecosystem |
2022-11-04 20:53:36 +0100 | <Guest|63> | hey, beginner question here, whenever i try to run the ghcup command in powershell, powershell closes. I just tried it on my desktop and it worked first try so i dont know what's going on. I just reset the laptop too so im out of ideas |
2022-11-04 20:54:09 +0100 | <[exa]> | Heyting: I'd answer "must read" with "for what purpose" |
2022-11-04 20:55:08 +0100 | <[exa]> | Heyting: there's a lot of nice stuff about ghc implementation and type system (mostly by SPJ), various nice papers about types and high-order stuff by the lambdaman, and ICFP has great functional pearls each year that are generally worth it |
2022-11-04 20:55:12 +0100 | <EvanR> | there's kind of a lot of papers |
2022-11-04 20:55:58 +0100 | <[exa]> | the SYB/Generics papers are great |
2022-11-04 20:56:54 +0100 | <[exa]> | Guest|63: whew, is there any logs or error report or so? |
2022-11-04 20:57:14 +0100 | <[exa]> | Heyting: also I recall the last "pop" FP paper I read was about selectives and it was great |
2022-11-04 20:58:48 +0100 | <EvanR> | anything on conal.net |
2022-11-04 20:59:07 +0100 | <[exa]> | +1 ^ |
2022-11-04 20:59:46 +0100 | <c_wraith> | Heyting: Being Lazy With Class (Simon Peyton Jones). The Essence of the Iterator Pattern (Jeremy Gibbons) |
2022-11-04 21:00:52 +0100 | <sclv> | [exa]: maybe you want the validation applicative? |
2022-11-04 21:00:57 +0100 | <c_wraith> | oh, and Lazy Functional State Threads (Jones and several others) |
2022-11-04 21:01:22 +0100 | <Heyting> | Thank you all. Take into consideration I am fresh in Haskell and FP (about a year on and off) and am a CS student, thinking about a PhD in this topic |
2022-11-04 21:01:38 +0100 | Guest47 | (~Guest47@171.79.46.173) (Ping timeout: 260 seconds) |
2022-11-04 21:01:46 +0100 | <c_wraith> | anything from SPJ is easy to read and understand. |
2022-11-04 21:01:59 +0100 | <sclv> | Heyting: there's an old list on the haskell wiki, but since you're interested in classic papers, the "old" is probably not too much a drawback https://wiki.haskell.org/Research_papers |
2022-11-04 21:02:16 +0100 | <[exa]> | sclv: validation collects all Lefts, and I dont really want the error semantics :( |
2022-11-04 21:02:50 +0100 | <[exa]> | ah wait I can smuggle in a Last there |
2022-11-04 21:03:05 +0100 | <sclv> | yeah, just use the Last monoid, :-) |
2022-11-04 21:03:20 +0100 | acidjnk | (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) |
2022-11-04 21:03:33 +0100 | <Heyting> | exa: what do you mean by "the lambdaman" |
2022-11-04 21:03:54 +0100 | <[exa]> | well at least this is going to force me to rewrite all the manual Rights and Lefts into proper wrappers :D |
2022-11-04 21:04:06 +0100 | <sclv> | i assume wadler, who is known for wearing a superman-like shirt in some of his undergrad lectures |
2022-11-04 21:04:44 +0100 | <[exa]> | yep ^ |
2022-11-04 21:05:17 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
2022-11-04 21:06:03 +0100 | <[exa]> | OOPSLA'06 now counts as an undergrad lecture? :D |
2022-11-04 21:06:36 +0100 | <[exa]> | Heyting: anyway, scroll down here a bit https://dev.to/adamretter/haskell-io-and-xpath-1fcj |
2022-11-04 21:06:43 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
2022-11-04 21:06:57 +0100 | <cheater> | what of smallcheck/smartcheck/etc do you guys like most? |
2022-11-04 21:09:09 +0100 | <Heyting> | yea now I remember him at the end of the propositions-as-types lecture turning into lambdaman |
2022-11-04 21:11:52 +0100 | <EvanR> | what is lambdaman's arch nemesis |
2022-11-04 21:12:39 +0100 | Guest|63 | (~Guest|63@90.203.229.51) (Quit: Connection closed) |
2022-11-04 21:12:41 +0100 | <Heyting> | I guess it would be BoilerPlateMan |
2022-11-04 21:13:23 +0100 | <Heyting> | tearing down lambda expression one AbstractIncrementFunctionFactory at a time |
2022-11-04 21:13:50 +0100 | <ski> | @where Oleg |
2022-11-04 21:13:51 +0100 | <lambdabot> | http://okmij.org/ftp/ |
2022-11-04 21:14:04 +0100 | <ski> | Heyting : ^ has quite a lot interesting stuff |
2022-11-04 21:14:17 +0100 | gmg | (~user@user/gehmehgeh) |
2022-11-04 21:14:57 +0100 | <EvanR> | evocative |
2022-11-04 21:15:18 +0100 | <[exa]> | EvanR: The Imperator, ofc |
2022-11-04 21:15:56 +0100 | <[exa]> | Heyting: this view of java is healthy. |
2022-11-04 21:16:26 +0100 | <EvanR> | java has lambdas now right, boilerplate solved? |
2022-11-04 21:17:24 +0100 | talismanick | (~talismani@2601:200:c100:c9e0::1b0b) |
2022-11-04 21:18:26 +0100 | <Heyting> | ski: this is just what I was looking for, ty |
2022-11-04 21:19:01 +0100 | <ski> | Heyting : the "Lambda the Ultimate: ..." papers (using Scheme) are classics, too |
2022-11-04 21:19:25 +0100 | <ski> | and Henry Baker's paper collection |
2022-11-04 21:19:42 +0100 | pavonia | (~user@user/siracusa) |
2022-11-04 21:21:29 +0100 | <ski> | for Haskell, Graham Hutton has some nice papers on folds and such things, i think |
2022-11-04 21:21:43 +0100 | <ski> | did someone mention "how to make ad hoc polymorphism less ad hoc" ? |
2022-11-04 21:22:00 +0100 | shailangsa | (~shailangs@host86-182-139-4.range86-182.btcentralplus.com) (Remote host closed the connection) |
2022-11-04 21:22:08 +0100 | <ski> | oh, and Phil Wadlers papers are usually quite ejoyable |
2022-11-04 21:22:27 +0100 | <ski> | Erik Meijer |
2022-11-04 21:23:38 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 276 seconds) |
2022-11-04 21:24:43 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
2022-11-04 21:24:48 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 21:29:03 +0100 | <[exa]> | kinda reminds me, the linear logic&types paper series from Girard and then Wadler was pretty enjoyable |
2022-11-04 21:29:21 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds) |
2022-11-04 21:39:12 +0100 | <ski> | Girard can be quite fun to read |
2022-11-04 21:43:08 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 21:44:04 +0100 | Kaipei | (~Kaiepi@108.175.84.104) (Ping timeout: 248 seconds) |
2022-11-04 21:47:59 +0100 | jero98772 | (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) |
2022-11-04 21:50:32 +0100 | <sm> | set up and run hoogle in a stack project: https://github.com/simonmichael/hledger/blob/7c8e241383575214e0d0c6b0c56100c89ce02902/Makefile#L80… |
2022-11-04 21:55:26 +0100 | td_ | (~td@83.135.9.48) (Read error: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) |
2022-11-04 22:00:43 +0100 | td_ | (~td@83.135.9.48) |
2022-11-04 22:03:28 +0100 | Guest75 | (~Guest75@178.141.177.81) (Ping timeout: 260 seconds) |
2022-11-04 22:07:37 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-11-04 22:11:19 +0100 | td_ | (~td@83.135.9.48) (Ping timeout: 272 seconds) |
2022-11-04 22:11:22 +0100 | irrgit_ | (~irrgit@146.70.27.250) (Quit: Leaving) |
2022-11-04 22:13:01 +0100 | td_ | (~td@83.135.9.48) |
2022-11-04 22:21:57 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2022-11-04 22:27:06 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-04 22:27:24 +0100 | Heyting | (~Heyting@193.198.16.217) (Remote host closed the connection) |
2022-11-04 22:27:47 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2022-11-04 22:28:13 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-04 22:31:04 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-04 22:31:32 +0100 | Xeroine | (~Xeroine@user/xeroine) (Ping timeout: 248 seconds) |
2022-11-04 22:34:17 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2022-11-04 22:35:04 +0100 | michalz | (~michalz@185.246.207.218) (Remote host closed the connection) |
2022-11-04 22:35:57 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
2022-11-04 22:37:45 +0100 | mncheck | (~mncheck@193.224.205.254) (Ping timeout: 255 seconds) |
2022-11-04 22:39:44 +0100 | Kaipei | (~Kaiepi@108.175.84.104) |
2022-11-04 22:39:50 +0100 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt https://eg.meansofproduction.biz/eg/index.php/Catalog_of_Internet_Identities) |
2022-11-04 22:41:05 +0100 | absence | (torgeihe@hildring.pvv.ntnu.no) (Ping timeout: 272 seconds) |
2022-11-04 22:42:07 +0100 | AlexNoo_ | AlexNoo |
2022-11-04 22:43:51 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2022-11-04 22:44:57 +0100 | talismanick | (~talismani@2601:200:c100:c9e0::1b0b) (Ping timeout: 255 seconds) |
2022-11-04 22:45:24 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 246 seconds) |
2022-11-04 22:49:15 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2022-11-04 22:49:40 +0100 | cheater | (~Username@user/cheater) |
2022-11-04 22:52:57 +0100 | son0p | (~ff@181.136.122.143) (Remote host closed the connection) |
2022-11-04 22:55:33 +0100 | son0p | (~ff@181.136.122.143) |
2022-11-04 22:56:35 +0100 | <c_wraith> | sclv: I submitted a documentation PR. Let's see what happens! https://github.com/haskell/cabal/pull/8573 |
2022-11-04 23:02:01 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 23:03:33 +0100 | zeenk | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
2022-11-04 23:06:33 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds) |
2022-11-04 23:07:39 +0100 | coot | (~coot@213.134.171.3) (Quit: coot) |
2022-11-04 23:09:09 +0100 | <JonathanWatson[m> | does anybody know anything about using the GHC API for dynamic linking? |
2022-11-04 23:09:33 +0100 | <JonathanWatson[m> | I've written this small test https://github.com/jonathanjameswatson/dynlink/blob/main/dynlink/app/Main.hs but I end up getting "mismatched interface file ways (wanted "", got "dyn")" |
2022-11-04 23:14:46 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-04 23:14:57 +0100 | zeenk2 | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
2022-11-04 23:15:42 +0100 | zeenk | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Read error: Connection reset by peer) |
2022-11-04 23:15:54 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-04 23:16:04 +0100 | jespada | (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com) |
2022-11-04 23:18:59 +0100 | zeenk | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
2022-11-04 23:19:05 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-11-04 23:19:44 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2022-11-04 23:20:00 +0100 | Guest19 | (~Guest19@c83-248-102-237.bredband.tele2.se) (Quit: Client closed) |
2022-11-04 23:20:23 +0100 | zeenk2 | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Ping timeout: 246 seconds) |
2022-11-04 23:20:44 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-11-04 23:22:26 +0100 | absence | (torgeihe@hildring.pvv.ntnu.no) |
2022-11-04 23:25:27 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-04 23:28:27 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-04 23:29:51 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-11-04 23:32:43 +0100 | zeenk | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Ping timeout: 255 seconds) |
2022-11-04 23:35:10 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 23:37:20 +0100 | nate3 | (~nate@98.45.169.16) |
2022-11-04 23:37:30 +0100 | zeenk | (~zeenk@5.12.219.147) |
2022-11-04 23:37:35 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-11-04 23:39:26 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2022-11-04 23:39:59 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
2022-11-04 23:41:05 +0100 | thaumavorio | (~thaumavor@thaumavor.io) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-11-04 23:42:31 +0100 | nate3 | (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
2022-11-04 23:43:36 +0100 | stackdroid18 | (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
2022-11-04 23:43:59 +0100 | thaumavorio | (~thaumavor@thaumavor.io) |
2022-11-04 23:44:22 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 23:47:48 +0100 | zeenk | (~zeenk@5.12.219.147) (Ping timeout: 248 seconds) |
2022-11-04 23:47:51 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 23:48:37 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 23:48:56 +0100 | mmhat | (~mmh@p200300f1c730762fee086bfffe095315.dip0.t-ipconnect.de) |
2022-11-04 23:51:14 +0100 | zeenk | (~zeenk@5.12.219.147) |
2022-11-04 23:51:22 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 23:51:32 +0100 | acidjnk | (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2022-11-04 23:51:42 +0100 | freeside | (~mengwong@bb115-66-48-84.singnet.com.sg) |
2022-11-04 23:52:46 +0100 | zeenk | (~zeenk@5.12.219.147) (Client Quit) |
2022-11-04 23:53:03 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 23:53:31 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 23:54:09 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 23:54:20 +0100 | zeenk | (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
2022-11-04 23:55:17 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 23:56:42 +0100 | sadmax | (~user@209.205.174.253) |
2022-11-04 23:57:53 +0100 | sadmax | (~user@209.205.174.253) (Remote host closed the connection) |
2022-11-04 23:58:42 +0100 | sadmax | (~user@209.205.174.253) |