Logs on 2023-04-03 (liberachat/#haskell)
| 00:01:10 | <geekosaur> | I don't think anyone promised those would be the same? (Consider, for example, IO.) |
| 00:02:07 | <erisco> | I thought this was the sort of associative law (more recognisable with Kleisli arrows) of Monads |
| 00:02:41 | <geekosaur> | yeh, I'm poking and I guess that is supposed to be true |
| 00:02:41 | <erisco> | IO breaks this? |
| 00:02:58 | <geekosaur> | I may be thinking about it wrong; it's getting late for me |
| 00:03:08 | <c_wraith> | I'm a bit worried about the scope of a in the second example. |
| 00:03:23 | <c_wraith> | That's not a universal rewrite |
| 00:03:31 | <c_wraith> | it requires z to not depend on a |
| 00:03:50 | <erisco> | c_wraith, yes, which relates to my non-compliant example |
| 00:04:57 | <erisco> | My example is when values have lifetimes. So say in x >>= \a -> y that a lives only as long as y |
| 00:05:20 | <erisco> | or let me use a different variable here.... x >>= \a -> m |
| 00:05:48 | <erisco> | if we say m = y >>= \b -> z then a is alive for y >>= \b -> z |
| 00:06:15 | <erisco> | but in the other composition, a dies earlier... so say y = pure a |
| 00:06:21 | <erisco> | it breaks in the other composition |
| 00:06:57 | <erisco> | you might run into something like this such as RAII |
| 00:07:23 | <erisco> | or other sorts of bracketing schemes |
| 00:08:10 | <c_wraith> | If you're observing the effect of a variable going out of scope, you're well beyond the sort of sort of reasoning that this formulation of the laws is intended to cover. |
| 00:08:44 | <monochrom> | The associative law has the side condition "z does not use a", or more technically "a does not occur free in z". |
| 00:09:31 | <ski> | erisco : it's associative law, yea |
| 00:10:17 | <monochrom> | If a occurs free in z, and there is no outer a, then "(x >>= \a -> y) >>= \b -> z" does not even compile, so you will never get to observe any runtime "violation". |
| 00:13:11 | <erisco> | okay lets say this example (open "txt" >>= \h -> pure h) >>= \i -> read i |
| 00:13:45 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
| 00:13:50 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 00:14:38 | <erisco> | the idea is, when I implement this quasi monad, I am treating (\h -> pure h) as an operation on the resource obtained by open "txt" ... so I actually open the file, run this operation, then close the file. But we see this operation returns the handle, which is now to a closed file |
| 00:15:16 | <erisco> | whereas open "txt" >>= (\h -> pure h >>= \i -> read i) does not read on a closed file |
| 00:15:36 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 00:15:44 | × | Unode quits (~Unode@fg-ext-220.embl.de) (Quit: Not that cable) |
| 00:15:56 | → | Unode joins (~Unode@fg-ext-220.embl.de) |
| 00:16:00 | → | tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
| 00:16:07 | × | ph88 quits (~ph88@ip5b426553.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds) |
| 00:16:41 | <hpc> | is there a rewrite going on that assumes pure is actually... pure? |
| 00:17:56 | <hpc> | it sounds like you've defined pure to actually do things, so you wouldn't have a lawful Applicative instance |
| 00:18:07 | <hpc> | and then anything can happen |
| 00:18:54 | <ski> | sounds like it's `open' that prematurely invalidates the resource |
| 00:20:08 | <ski> | why does `open' nested inside one `>>=' pass the resource to the right, but nested inside two `>>='s doesn't keep it alive for both continuations ? |
| 00:21:17 | <hpc> | hmm, can that even be implemented? |
| 00:21:52 | × | vulpine quits (xfnw@tilde.team) (Quit: Connection reset by purr) |
| 00:22:23 | <erisco> | Open fileName >>= f = IO (openFileIO fileName) >>= \h -> f h >>= \x -> IO (closeFileIO h) >>= \_ -> pure x with Open :: String -> M FileHandle and IO :: IO a -> M a for my quasi monad M |
| 00:22:39 | <erisco> | just as an example idea for this |
| 00:26:14 | <erisco> | actually maybe the tool to use nowadays is ChatGPT eh? lol |
| 00:26:40 | × | merijn quits (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
| 00:26:52 | <juri_> | chatgpt doesn't understand my haskell. i don't know whether that says bad things about it, or my haskell... |
| 00:27:42 | <erisco> | What do you call a mathematical Group without inverses? ChatGPT: semigroup ... well close enough so here goes |
| 00:29:10 | → | whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com) |
| 00:29:35 | <erisco> | well ChatGPT seems fairly convinced this thing hasn't been given a name |
| 00:32:29 | → | chanceyan joins (~chanceyan@user/chanceyan) |
| 00:35:41 | <erisco> | Normally you see a separate "bracket" operation defined, which then leaves you free to define >>= such that it retains associativity... but it may also be a frivolous victory if you're predominately concerned about bracketing |
| 00:38:57 | <Clinton[m]> | I caught myself saying the following to a colleague:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/133c01dff29a293d38e1f785acc7c426a0841714>) |
| 00:38:59 | → | Guest63 joins (~Guest@2409:4073:211f:a858:ddd8:3916:b272:6b0b) |
| 00:39:19 | <Clinton[m]> | * I caught myself saying the following to a colleague:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/fcc76c6da47f4b4598335b1452d90d05574f6a79>) |
| 00:41:15 | → | emmanuelux_ joins (~emmanuelu@user/emmanuelux) |
| 00:42:34 | → | vulpine joins (xfnw@tilde.team) |
| 00:43:34 | × | kachmar quits (~kachmar@pppoe.178-66-156-162.dynamic.avangarddsl.ru) (Remote host closed the connection) |
| 00:44:01 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Ping timeout: 240 seconds) |
| 00:45:10 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 00:46:18 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 00:49:43 | × | Guest63 quits (~Guest@2409:4073:211f:a858:ddd8:3916:b272:6b0b) (Ping timeout: 260 seconds) |
| 00:50:19 | <yushyin> | Clinton[m]: the word you are looking for is type constructor |
| 00:52:30 | → | dipper_ joins (~dipper@203.168.13.14) |
| 00:59:43 | × | andjjj23 quits (~irc@107.170.228.47) (Remote host closed the connection) |
| 01:00:40 | → | andjjj23 joins (~irc@107.170.228.47) |
| 01:06:23 | × | gurkenglas quits (~gurkengla@dynamic-046-114-178-123.46.114.pool.telefonica.de) (Ping timeout: 260 seconds) |
| 01:11:06 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:16:05 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 01:17:13 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:22:05 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 01:22:05 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 01:22:05 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:22:52 | → | merijn joins (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) |
| 01:23:20 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 01:25:27 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 01:25:43 | <erisco> | I don't know if it is really that weird. I guess the capitalisation difference is the problem... but it just seems to be at the value level we've come up with "value" and "Dynamic" which is analogous to "type" and "Type" |
| 01:27:06 | → | robobub joins (uid248673@id-248673.uxbridge.irccloud.com) |
| 01:28:27 | × | merijn quits (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 01:28:29 | <erisco> | "the integer 5 has the type Integer" |
| 01:28:56 | <erisco> | maybe it is just unnecessarily wordy... "5 is an Integer" |
| 01:29:12 | → | razetime joins (~Thunderbi@49.207.192.117) |
| 01:29:58 | <c_wraith> | > 5 :: Double |
| 01:30:00 | <lambdabot> | 5.0 |
| 01:30:38 | <erisco> | pedants out tonight eh |
| 01:31:51 | ski | smiles |
| 01:34:32 | <monochrom> | "5 is an Integer" is alright, but beware that "is-a" is heavily overloaded, there are other times "X is-a Y" means something other than "value :: type". |
| 01:35:24 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 01:37:15 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds) |
| 01:58:22 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds) |
| 02:02:26 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 02:05:40 | × | xff0x quits (~xff0x@2405:6580:b080:900:da20:b65a:3c49:4b97) (Ping timeout: 260 seconds) |
| 02:07:05 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:07:05 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:07:05 | finn_elija | is now known as FinnElija |
| 02:08:11 | × | tinwood quits (~tinwood@canonical/tinwood) (Remote host closed the connection) |
| 02:11:11 | → | tinwood joins (~tinwood@general.default.akavanagh.uk0.bigv.io) |
| 02:11:11 | × | tinwood quits (~tinwood@general.default.akavanagh.uk0.bigv.io) (Changing host) |
| 02:11:11 | → | tinwood joins (~tinwood@canonical/tinwood) |
| 02:15:25 | → | nate1 joins (~nate@98.45.169.16) |
| 02:20:38 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 02:24:49 | × | td_ quits (~td@i53870922.versanet.de) (Ping timeout: 276 seconds) |
| 02:25:17 | → | merijn joins (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) |
| 02:25:33 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 265 seconds) |
| 02:26:23 | → | td_ joins (~td@i53870916.versanet.de) |
| 02:30:12 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 02:36:57 | → | talismanick joins (~talismani@2601:200:c000:f7a0::fb70) |
| 02:40:39 | × | pyook quits (~pyook@user/puke) () |
| 02:42:58 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 252 seconds) |
| 02:52:11 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:59:23 | × | merijn quits (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
| 03:05:04 | → | jargon joins (~jargon@174-22-223-2.phnx.qwest.net) |
| 03:05:23 | × | jargon quits (~jargon@174-22-223-2.phnx.qwest.net) (Remote host closed the connection) |
| 03:11:24 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:49d9:74ac:3120:b38e) |
| 03:12:28 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 265 seconds) |
| 03:19:25 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds) |
| 03:35:35 | → | asdfasdf joins (~asdfasdf@2600:1700:83b0:1d60::2b) |
| 03:36:43 | × | asdfasdf quits (~asdfasdf@2600:1700:83b0:1d60::2b) (Remote host closed the connection) |
| 03:36:58 | <Clinton[m]> | yushyin: what if I say this: |
| 03:36:59 | <Clinton[m]> | "the thingy `"hello"` has the kind `Symbol`" |
| 03:36:59 | <Clinton[m]> | I feel like "hello" isn't a type constructor. |
| 03:36:59 | <Clinton[m]> | Is there a word for all the entities in the Haskell type system? |
| 03:38:58 | <yushyin> | a type-level string literal? |
| 03:40:24 | <Clinton[m]> | yushyin: what's the word the describes both these things.... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/97ff6afe4d9b296868105aa7d0d51422e17288e4>) |
| 03:40:37 | <c_wraith> | Connor McBride suggested "type-level value" as a generic term for promoted types which will also apply reasonably to dependent types. |
| 03:40:53 | <c_wraith> | promoted values, that is |
| 03:41:02 | <c_wraith> | string literals are promoted values! |
| 03:41:32 | <Clinton[m]> | s///, s/Symbol/Maybe/, s/Type -> Type/"hello"/ |
| 03:42:19 | <Clinton[m]> | * yushyin: what's the word the describes both these things.... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/6edd23afff3cd47c7e3e8de5e7bac19d7aeb0940>) |
| 03:42:40 | <c_wraith> | Oh, well those are just types, ever since TypeInType became the default. Everything at the type level is a type. |
| 03:43:01 | <c_wraith> | There are more specific terms for narrower usage |
| 03:43:08 | <c_wraith> | But if you want to talk about all of them, they're types |
| 03:43:26 | <Clinton[m]> | But there is a distinction, because only thinks of kind Type can be represented. |
| 03:43:46 | <c_wraith> | That's a special case, it gets a more precise term |
| 03:44:30 | <Clinton[m]> | So you have to say "types that are not of kind type can not be represented"? That's very confusing. |
| 03:45:42 | <c_wraith> | That's not even accurate. It would be more accurate to say "Type that does not classify a value" or something. |
| 03:47:12 | <ski> | non-concrete types |
| 03:48:01 | <Clinton[m]> | c_wraith: "types that are not of kind type do not classify values" is better? |
| 03:48:36 | <c_wraith> | That's an accurate statement, at least. |
| 03:55:42 | → | merijn joins (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) |
| 03:57:48 | → | rekahsoft joins (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-142.dsl.bell.ca) |
| 03:58:53 | × | rekahsoft quits (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-142.dsl.bell.ca) (Remote host closed the connection) |
| 03:59:28 | → | rekahsoft joins (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-142.dsl.bell.ca) |
| 04:09:21 | × | rekahsoft quits (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-142.dsl.bell.ca) (Ping timeout: 255 seconds) |
| 04:20:11 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 04:26:30 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 04:28:34 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 04:29:47 | → | mbuf joins (~Shakthi@49.207.178.186) |
| 04:30:01 | × | merijn quits (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 04:31:35 | <JensPetersen[m]> | `mwhen` is now in extra btw! yay :-) dminuoso Hecate |
| 04:40:32 | → | Scraeling joins (Scraeling@user/scraeling) |
| 04:41:19 | × | codaraxis quits (~codaraxis@user/codaraxis) (Quit: Leaving) |
| 04:52:55 | → | titibandit joins (~titibandi@user/titibandit) |
| 05:02:38 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 05:14:31 | → | trev joins (~trev@user/trev) |
| 05:15:43 | → | nate1 joins (~nate@98.45.169.16) |
| 05:16:24 | × | ymherklotz quits (cb2c9cfbdd@2604:bf00:561:2000::29a) (Ping timeout: 250 seconds) |
| 05:16:31 | × | shreyasminocha quits (51fdc93eda@user/shreyasminocha) (Ping timeout: 240 seconds) |
| 05:16:50 | × | whereiseveryone quits (206ba86c98@2604:bf00:561:2000::2e4) (Ping timeout: 250 seconds) |
| 05:17:16 | × | filwisher quits (2e6936c793@2604:bf00:561:2000::170) (Ping timeout: 250 seconds) |
| 05:17:41 | × | MonsoonSecrecy quits (f78c86e960@2604:bf00:561:2000::f99) (Ping timeout: 250 seconds) |
| 05:17:42 | × | sm2n quits (ae95cb1267@user/sm2n) (Ping timeout: 250 seconds) |
| 05:17:42 | × | JoelMcCracken quits (5ea8252fbb@2604:bf00:561:2000::10e3) (Ping timeout: 250 seconds) |
| 05:17:42 | × | Ankhers quits (e99e97ef8e@2604:bf00:561:2000::2a2) (Ping timeout: 250 seconds) |
| 05:18:06 | → | ymherklotz joins (cb2c9cfbdd@2604:bf00:561:2000::29a) |
| 05:18:09 | → | Ankhers joins (e99e97ef8e@2604:bf00:561:2000::2a2) |
| 05:18:09 | → | sm2n joins (ae95cb1267@user/sm2n) |
| 05:18:13 | → | filwisher joins (2e6936c793@2604:bf00:561:2000::170) |
| 05:18:15 | → | whereiseveryone joins (206ba86c98@2604:bf00:561:2000::2e4) |
| 05:18:16 | → | MonsoonSecrecy joins (f78c86e960@2604:bf00:561:2000::f99) |
| 05:18:18 | → | JoelMcCracken joins (5ea8252fbb@2604:bf00:561:2000::10e3) |
| 05:19:19 | → | shreyasminocha joins (51fdc93eda@user/shreyasminocha) |
| 05:19:48 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 05:20:27 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds) |
| 05:26:38 | → | merijn joins (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) |
| 05:30:40 | × | mechap quits (~mechap@user/mechap) (Ping timeout: 248 seconds) |
| 05:31:23 | × | merijn quits (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
| 05:31:26 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 05:31:40 | → | trev joins (~trev@user/trev) |
| 05:32:07 | × | trev quits (~trev@user/trev) (Client Quit) |
| 05:32:28 | → | mechap joins (~mechap@user/mechap) |
| 05:32:34 | → | trev joins (~trev@user/trev) |
| 05:33:07 | × | trev quits (~trev@user/trev) (Client Quit) |
| 05:33:54 | → | trev joins (~trev@user/trev) |
| 05:40:31 | → | Midjak joins (~Midjak@82.66.147.146) |
| 05:50:50 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 05:54:38 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 06:02:25 | → | kenran joins (~user@user/kenran) |
| 06:02:59 | → | chomwitt joins (~chomwitt@2a02:587:7a16:e500:1ac0:4dff:fedb:a3f1) |
| 06:05:54 | × | razetime quits (~Thunderbi@49.207.192.117) (Ping timeout: 255 seconds) |
| 06:16:38 | → | mastarija joins (~mastarija@2a05:4f46:e03:6000:4e5d:6e20:58be:8722) |
| 06:20:13 | × | kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 256 seconds) |
| 06:27:04 | → | merijn joins (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) |
| 06:28:42 | → | mncheck joins (~mncheck@193.224.205.254) |
| 06:32:28 | → | mmhat joins (~mmh@p200300f1c70240ecee086bfffe095315.dip0.t-ipconnect.de) |
| 06:32:40 | × | mmhat quits (~mmh@p200300f1c70240ecee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
| 06:41:31 | × | dumptruckman quits (~dumptruck@143-42-239-71.ip.linodeusercontent.com) (Ping timeout: 240 seconds) |
| 06:42:05 | → | coot joins (~coot@213.134.170.228) |
| 06:43:04 | → | dumptruckman joins (~dumptruck@143-42-239-71.ip.linodeusercontent.com) |
| 06:43:43 | → | razetime joins (~Thunderbi@49.207.192.117) |
| 06:49:35 | × | bliminse quits (~bliminse@user/bliminse) (Quit: leaving) |
| 06:50:00 | × | merijn quits (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
| 06:54:11 | → | michalz joins (~michalz@185.246.207.203) |
| 06:54:58 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 06:56:33 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:58:50 | × | whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:04:36 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:06:14 | × | mauke quits (~mauke@user/mauke) (Remote host closed the connection) |
| 07:08:12 | → | mauke joins (~mauke@user/mauke) |
| 07:08:12 | × | mauke quits (~mauke@user/mauke) (Remote host closed the connection) |
| 07:09:18 | × | freeside quits (~mengwong@103.252.202.85) (Ping timeout: 252 seconds) |
| 07:11:57 | → | NiceBird joins (~NiceBird@185.133.111.196) |
| 07:12:15 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:c901:e00e:1529:ca01) |
| 07:21:04 | → | titibandit joins (~titibandi@user/titibandit) |
| 07:25:02 | → | acidjnk joins (~acidjnk@p200300d6e715c470504c33b8121c1d7f.dip0.t-ipconnect.de) |
| 07:26:16 | → | mauke joins (~mauke@user/mauke) |
| 07:27:01 | × | sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection) |
| 07:27:52 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 07:29:49 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 07:29:49 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 07:29:49 | finn_elija | is now known as FinnElija |
| 07:31:50 | → | sefidel joins (~sefidel@user/sefidel) |
| 07:33:38 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 07:33:52 | × | kenran quits (~user@user/kenran) (Ping timeout: 268 seconds) |
| 07:34:26 | × | razetime quits (~Thunderbi@49.207.192.117) (Quit: See You Space Cowboy) |
| 07:38:09 | × | shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 255 seconds) |
| 07:38:12 | → | cyphase joins (~cyphase@user/cyphase) |
| 07:38:50 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 07:40:06 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 07:41:05 | × | titibandit quits (~titibandi@user/titibandit) (Quit: leaving) |
| 07:41:20 | → | titibandit joins (~titibandi@user/titibandit) |
| 07:48:36 | → | zeenk joins (~zeenk@2a02:2f04:a307:2300::7fe) |
| 07:49:05 | → | cfricke joins (~cfricke@user/cfricke) |
| 07:57:36 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 265 seconds) |
| 07:59:07 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 07:59:11 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 07:59:21 | → | merijn joins (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) |
| 07:59:39 | × | hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds) |
| 08:00:08 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 08:03:12 | → | kenran joins (~user@user/kenran) |
| 08:06:16 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 08:10:46 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b9e9:a7af:521:d6d2) (Remote host closed the connection) |
| 08:12:31 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 08:14:11 | × | sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection) |
| 08:15:44 | → | hugo joins (znc@verdigris.lysator.liu.se) |
| 08:17:50 | <Hecate> | JensPetersen[m]: yay, congrats! :) |
| 08:19:11 | × | yaroot quits (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) (Remote host closed the connection) |
| 08:20:37 | → | sefidel joins (~sefidel@user/sefidel) |
| 08:20:45 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 08:21:53 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:24:37 | × | zeenk quits (~zeenk@2a02:2f04:a307:2300::7fe) (Remote host closed the connection) |
| 08:24:44 | <JensPetersen[m]> | :-) |
| 08:25:00 | → | zeenk joins (~zeenk@2a02:2f04:a307:2300::fba) |
| 08:25:01 | <JensPetersen[m]> | Thanks you actually, Hecate! |
| 08:29:40 | → | kritzefitz joins (~kritzefit@debian/kritzefitz) |
| 08:37:11 | × | phma quits (~phma@2001:5b0:210d:32c8:ebb2:77d8:cd18:90d7) (Read error: Connection reset by peer) |
| 08:37:35 | × | merijn quits (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 08:37:46 | <Hecate> | JensPetersen[m]: pleasure is mine :) |
| 08:38:00 | → | phma joins (~phma@host-67-44-208-48.hnremote.net) |
| 08:47:39 | × | ft quits (~ft@p4fc2a88b.dip0.t-ipconnect.de) (Quit: leaving) |
| 08:48:11 | × | acidjnk quits (~acidjnk@p200300d6e715c470504c33b8121c1d7f.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 08:49:22 | × | wrengr quits (~wrengr@201.59.83.34.bc.googleusercontent.com) (Remote host closed the connection) |
| 08:50:06 | → | freeside joins (~mengwong@103.252.202.85) |
| 08:59:28 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 08:59:55 | → | merijn joins (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) |
| 09:08:30 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:08:39 | × | kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 250 seconds) |
| 09:11:16 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b9e9:a7af:521:d6d2) |
| 09:15:41 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b9e9:a7af:521:d6d2) (Ping timeout: 246 seconds) |
| 09:16:53 | → | Square joins (~Square4@user/square) |
| 09:16:57 | → | nate1 joins (~nate@98.45.169.16) |
| 09:17:13 | × | Scraeling quits (Scraeling@user/scraeling) (Remote host closed the connection) |
| 09:21:31 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 09:27:51 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 09:32:43 | × | theodorc quits (theodorc@cassarossa.samfundet.no) (Ping timeout: 252 seconds) |
| 09:35:24 | → | gurkenglas joins (~gurkengla@dynamic-046-114-178-123.46.114.pool.telefonica.de) |
| 09:35:43 | × | jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 09:36:55 | × | chomwitt quits (~chomwitt@2a02:587:7a16:e500:1ac0:4dff:fedb:a3f1) (Ping timeout: 260 seconds) |
| 09:37:25 | → | kritzefitz joins (~kritzefit@debian/kritzefitz) |
| 09:40:33 | → | chomwitt joins (~chomwitt@2a02:587:7a16:e500:1ac0:4dff:fedb:a3f1) |
| 09:46:03 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:46:53 | → | theodorc joins (theodorc@cassarossa.samfundet.no) |
| 09:47:01 | × | chanceyan quits (~chanceyan@user/chanceyan) (Quit: Client closed) |
| 09:50:22 | × | turlando quits (~turlando@user/turlando) (Read error: Connection reset by peer) |
| 09:51:39 | × | theodorc quits (theodorc@cassarossa.samfundet.no) (Ping timeout: 248 seconds) |
| 09:52:22 | → | turlando joins (~turlando@user/turlando) |
| 09:57:33 | × | Vq quits (~vq@90-227-192-206-no77.tbcn.telia.com) (Ping timeout: 268 seconds) |
| 09:57:47 | × | tusko quits (~yeurt@user/tusko) (Remote host closed the connection) |
| 09:58:33 | → | tusko joins (~yeurt@user/tusko) |
| 09:59:10 | → | Vq joins (~vq@90-227-192-206-no77.tbcn.telia.com) |
| 10:03:35 | merijn | facepalms |
| 10:04:07 | <merijn> | Made a PR to a library to relax the base bound for GHC 9.6, turns out it was so old I accidentally just bumped it to 9.4 and need to make a new PR >.> |
| 10:04:28 | → | theodorc joins (theodorc@cassarossa.samfundet.no) |
| 10:05:12 | × | jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 265 seconds) |
| 10:06:31 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
| 10:06:58 | → | jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 10:07:16 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 10:08:13 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 10:10:52 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 276 seconds) |
| 10:16:11 | → | acidjnk joins (~acidjnk@p200300d6e715c470504c33b8121c1d7f.dip0.t-ipconnect.de) |
| 10:16:46 | → | vlad joins (~vlad@2a00:23c6:9822:4c01:cd08:b330:8871:c381) |
| 10:20:29 | × | kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 256 seconds) |
| 10:20:42 | → | kritzefitz joins (~kritzefit@debian/kritzefitz) |
| 10:20:42 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 10:22:39 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 10:26:57 | × | Vq quits (~vq@90-227-192-206-no77.tbcn.telia.com) (Ping timeout: 265 seconds) |
| 10:28:28 | → | Vq joins (~vq@90-227-192-206-no77.tbcn.telia.com) |
| 10:29:48 | → | Guest45 joins (~Guest45@5-157-196-109.itvmedia.pl) |
| 10:36:33 | <Guest45> | hey, i was looking through haskell 2010 report and saw the definition fexp = [fexp] aexp? i'm not sure what's the rationale behind making fexp optional, can anyone help me decipher this fragment? |
| 10:38:38 | <int-e> | it encodes a non-empty sequence of aexp-s |
| 10:39:44 | <int-e> | you could expand it to fexp = aexp | fexp aexp |
| 10:40:21 | → | __monty__ joins (~toonn@user/toonn) |
| 10:45:17 | <c_wraith> | Put another way - it's specifically the recursion that's optional. This is helpful in that it allows finite programs. :) |
| 10:46:12 | → | rs joins (~rs@p200300cf072e68ea6b29732cbdb21e80.dip0.t-ipconnect.de) |
| 10:46:25 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds) |
| 10:46:35 | rs | is now known as Guest3970 |
| 10:47:37 | <Guest45> | does that mean that for example syntactically every data constructor by itself or every value is a fexp - function application? |
| 10:48:25 | <int-e> | according to this grammar, yes |
| 10:49:00 | <Guest45> | i see, that part wasn't intuitive to me, thank you |
| 10:49:09 | <int-e> | (but you'll confuse people if you use that as terminology in writing) |
| 10:57:05 | <c_wraith> | by the way, that grammar is from https://www.haskell.org/onlinereport/haskell2010/haskellch3.html . So it's pretty official, but yeah. It's not commonly used. |
| 10:58:28 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 10:58:55 | <int-e> | the goal of the grammar is to describe (an approximation of) the language concisely, not to accurately reflect standard terminology; compromises will be made for brevity. |
| 10:59:09 | × | Guest45 quits (~Guest45@5-157-196-109.itvmedia.pl) (Quit: Client closed) |
| 10:59:15 | × | Guest3970 quits (~rs@p200300cf072e68ea6b29732cbdb21e80.dip0.t-ipconnect.de) (Quit: Client closed) |
| 11:01:36 | → | Guest45 joins (~Guest45@5-157-196-109.itvmedia.pl) |
| 11:03:58 | × | Guest45 quits (~Guest45@5-157-196-109.itvmedia.pl) (Client Quit) |
| 11:04:13 | → | kenran joins (~user@user/kenran) |
| 11:05:37 | mesaoptimizer | is now known as mesaoptimizer0 |
| 11:12:05 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 11:12:06 | → | xff0x joins (~xff0x@ai098135.d.east.v6connect.net) |
| 11:13:11 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 11:16:35 | → | polarheron joins (~polarhero@5-157-196-109.itvmedia.pl) |
| 11:18:04 | × | polarheron quits (~polarhero@5-157-196-109.itvmedia.pl) (Client Quit) |
| 11:20:49 | × | Sauvin quits (~sauvin@user/Sauvin) (Ping timeout: 250 seconds) |
| 11:20:52 | → | Bocaneri joins (~sauvin@user/Sauvin) |
| 11:21:15 | Bocaneri | is now known as Guest407 |
| 11:23:20 | → | rumgzy joins (~sauvin@user/Sauvin) |
| 11:25:52 | × | theodorc quits (theodorc@cassarossa.samfundet.no) (Ping timeout: 248 seconds) |
| 11:26:20 | × | Guest407 quits (~sauvin@user/Sauvin) (Ping timeout: 252 seconds) |
| 11:28:45 | × | coot quits (~coot@213.134.170.228) (Quit: coot) |
| 11:32:20 | → | comerijn joins (~merijn@185.143.104.11) |
| 11:34:25 | × | merijn quits (~merijn@c-001-001-009.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 11:38:42 | → | theodorc joins (theodorc@cassarossa.samfundet.no) |
| 11:43:03 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Quit: use-value) |
| 11:43:23 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 11:52:03 | × | tubogram44 quits (~tubogram@user/tubogram) (Ping timeout: 240 seconds) |
| 11:59:55 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 12:04:07 | → | Guest62100 joins (~Guest62@5-157-196-109.itvmedia.pl) |
| 12:04:14 | × | Guest62100 quits (~Guest62@5-157-196-109.itvmedia.pl) (Client Quit) |
| 12:05:24 | → | tubogram44 joins (~tubogram@user/tubogram) |
| 12:06:27 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:06:48 | → | xiliuya joins (~xiliuya@user/xiliuya) |
| 12:13:50 | → | vglfr joins (~vglfr@46.96.188.242) |
| 12:14:29 | × | vglfr quits (~vglfr@46.96.188.242) (Remote host closed the connection) |
| 12:15:42 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Quit: use-value) |
| 12:16:06 | → | vglfr joins (~vglfr@46.96.188.242) |
| 12:16:28 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 12:19:47 | × | chomwitt quits (~chomwitt@2a02:587:7a16:e500:1ac0:4dff:fedb:a3f1) (Ping timeout: 260 seconds) |
| 12:34:01 | → | kenran` joins (~user@user/kenran) |
| 12:35:35 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 12:35:36 | × | kenran quits (~user@user/kenran) (Ping timeout: 246 seconds) |
| 12:37:15 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 12:37:27 | × | turlando quits (~turlando@user/turlando) (Read error: Connection reset by peer) |
| 12:42:02 | → | turlando joins (~turlando@user/turlando) |
| 12:42:58 | × | xiliuya quits (~xiliuya@user/xiliuya) (Ping timeout: 276 seconds) |
| 12:43:38 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 12:43:58 | → | xiliuya joins (~xiliuya@user/xiliuya) |
| 12:49:10 | × | zer0bitz_ quits (~zer0bitz@2001:2003:f443:d600:9c68:6672:1252:446) () |
| 12:52:09 | → | dsrt^ joins (~dsrt@c-76-105-96-13.hsd1.ga.comcast.net) |
| 12:55:11 | → | zer0bitz joins (~zer0bitz@2001:2003:f443:d600:9c68:6672:1252:446) |
| 12:57:04 | × | drdo quits (~drdo@bl7-76-103.dsl.telepac.pt) (Ping timeout: 248 seconds) |
| 13:07:55 | → | drdo joins (~drdo@bl7-76-103.dsl.telepac.pt) |
| 13:09:14 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 13:10:11 | × | acidjnk quits (~acidjnk@p200300d6e715c470504c33b8121c1d7f.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 13:10:50 | × | xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Quit: xff0x) |
| 13:13:08 | → | xff0x joins (~xff0x@2405:6580:b080:900:4d3f:5103:d2fc:f92f) |
| 13:18:27 | → | nate1 joins (~nate@98.45.169.16) |
| 13:18:40 | → | ystael joins (~ystael@user/ystael) |
| 13:18:52 | → | chomwitt joins (~chomwitt@ppp-94-69-24-223.home.otenet.gr) |
| 13:20:07 | → | gtdg joins (~gtdg@user/gtdg) |
| 13:23:23 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
| 13:25:04 | × | xff0x quits (~xff0x@2405:6580:b080:900:4d3f:5103:d2fc:f92f) (Quit: xff0x) |
| 13:28:37 | → | xff0x joins (~xff0x@ai098135.d.east.v6connect.net) |
| 13:34:37 | → | enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
| 13:35:16 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds) |
| 13:37:24 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 13:37:24 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 13:37:24 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:37:55 | → | bliminse joins (~bliminse@user/bliminse) |
| 13:38:39 | × | xiliuya quits (~xiliuya@user/xiliuya) (Ping timeout: 260 seconds) |
| 13:40:34 | → | xiliuya joins (~xiliuya@user/xiliuya) |
| 13:44:38 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
| 13:44:39 | × | kenran` quits (~user@user/kenran) (Remote host closed the connection) |
| 13:46:07 | × | ski quits (~ski@remote12.chalmers.se) (Remote host closed the connection) |
| 13:51:13 | × | chomwitt quits (~chomwitt@ppp-94-69-24-223.home.otenet.gr) (Ping timeout: 276 seconds) |
| 13:51:38 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 13:52:23 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 13:56:35 | → | acidjnk joins (~acidjnk@p200300d6e715c470b96f59b95ab3d487.dip0.t-ipconnect.de) |
| 13:56:52 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 13:57:14 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 13:59:41 | → | ski joins (~ski@remote11.chalmers.se) |
| 14:00:12 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 14:04:45 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 14:05:35 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 14:06:04 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 14:10:40 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:12:58 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 14:19:19 | → | dinodik joins (~dinodik@dyn3232-62.wlan.ic.ac.uk) |
| 14:19:41 | <dinodik> | @undo [x | Just x <- xs] |
| 14:19:41 | <lambdabot> | concatMap (\ a -> case a of { Just x -> [x]; _ -> []}) xs |
| 14:20:41 | → | ubert joins (~Thunderbi@p200300ecdf14117823820b10742c9ca9.dip0.t-ipconnect.de) |
| 14:20:49 | <ski> | @type mapMaybe id |
| 14:20:50 | <lambdabot> | [Maybe b] -> [b] |
| 14:21:00 | <ski> | @type catMaybes |
| 14:21:01 | <lambdabot> | [Maybe a] -> [a] |
| 14:21:24 | <dinodik> | @undo [x | x <- [1..], even x] |
| 14:21:24 | <lambdabot> | concatMap (\ x -> if even x then [x] else []) [1 ..] |
| 14:21:55 | <ski> | @type filter even [1 ..] |
| 14:21:56 | <lambdabot> | Integral a => [a] |
| 14:24:29 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 14:26:01 | <dinodik> | @undo [(x,y) | x <- [1..], y <- [1..x-1], gcd x y == 1] |
| 14:26:01 | <lambdabot> | concatMap (\ x -> concatMap (\ y -> if gcd x y == 1 then [(x, y)] else []) [1 .. x - 1]) [1 ..] |
| 14:27:12 | × | dinodik quits (~dinodik@dyn3232-62.wlan.ic.ac.uk) (Remote host closed the connection) |
| 14:27:57 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 14:28:55 | × | mechap quits (~mechap@user/mechap) (Ping timeout: 276 seconds) |
| 14:29:27 | × | dipper_ quits (~dipper@203.168.13.14) (Ping timeout: 255 seconds) |
| 14:30:04 | → | dinodik joins (~dinodik@dyn3232-62.wlan.ic.ac.uk) |
| 14:30:13 | → | mechap joins (~mechap@user/mechap) |
| 14:31:54 | × | dinodik quits (~dinodik@dyn3232-62.wlan.ic.ac.uk) (Remote host closed the connection) |
| 14:32:30 | × | xiliuya quits (~xiliuya@user/xiliuya) (Quit: good night~) |
| 14:43:36 | → | econo joins (uid147250@user/econo) |
| 14:46:06 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 14:50:12 | → | chomwitt joins (~chomwitt@ppp-94-69-24-223.home.otenet.gr) |
| 14:50:41 | × | gurkenglas quits (~gurkengla@dynamic-046-114-178-123.46.114.pool.telefonica.de) (Ping timeout: 246 seconds) |
| 14:51:02 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 14:51:55 | × | ubert quits (~Thunderbi@p200300ecdf14117823820b10742c9ca9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 14:51:57 | → | ub joins (~Thunderbi@p200300ecdf14117e9df1368470f0c9b6.dip0.t-ipconnect.de) |
| 14:52:52 | → | gurkenglas joins (~gurkengla@dynamic-046-114-178-123.46.114.pool.telefonica.de) |
| 14:52:59 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 14:53:02 | → | shriekingnoise joins (~shrieking@186.137.175.87) |
| 14:53:42 | × | enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
| 14:54:14 | ub | is now known as ubert |
| 14:56:21 | × | remexre quits (~remexre@user/remexre) (Read error: Connection reset by peer) |
| 15:01:28 | × | koz quits (~koz@121.99.240.58) (Quit: ZNC 1.8.2 - https://znc.in) |
| 15:01:44 | → | koz joins (~koz@121.99.240.58) |
| 15:01:56 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:c901:e00e:1529:ca01) (Quit: WeeChat 2.8) |
| 15:04:43 | × | freeside quits (~mengwong@103.252.202.85) (Ping timeout: 248 seconds) |
| 15:09:37 | × | mechap quits (~mechap@user/mechap) (Ping timeout: 250 seconds) |
| 15:11:48 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 15:12:52 | → | mechap joins (~mechap@user/mechap) |
| 15:14:13 | × | gtdg quits (~gtdg@user/gtdg) (Quit: Client closed) |
| 15:21:52 | → | remexre joins (~remexre@user/remexre) |
| 15:22:11 | × | mechap quits (~mechap@user/mechap) (Ping timeout: 250 seconds) |
| 15:22:32 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
| 15:23:05 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 15:31:12 | → | rekahsoft joins (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-142.dsl.bell.ca) |
| 15:32:23 | → | hueso joins (~root@user/hueso) |
| 15:35:34 | → | mechap joins (~mechap@user/mechap) |
| 15:36:08 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 15:36:35 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 15:37:03 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:37:18 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 15:41:51 | × | mechap quits (~mechap@user/mechap) (Ping timeout: 260 seconds) |
| 15:41:52 | → | ub joins (~Thunderbi@p548c88d5.dip0.t-ipconnect.de) |
| 15:42:08 | × | ubert quits (~Thunderbi@p200300ecdf14117e9df1368470f0c9b6.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 15:42:09 | ub | is now known as ubert |
| 15:45:13 | → | mechap joins (~mechap@user/mechap) |
| 15:46:00 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 15:48:16 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 15:56:17 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 15:59:30 | rumgzy | is now known as Sauvin |
| 16:00:00 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 16:01:15 | × | gurkenglas quits (~gurkengla@dynamic-046-114-178-123.46.114.pool.telefonica.de) (Ping timeout: 255 seconds) |
| 16:05:35 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b9e9:a7af:521:d6d2) |
| 16:12:47 | × | hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 264 seconds) |
| 16:14:26 | → | Mariogaout joins (~Mariogaou@37.19.210.10) |
| 16:14:43 | × | Mariogaout quits (~Mariogaou@37.19.210.10) (Client Quit) |
| 16:18:48 | × | comerijn quits (~merijn@185.143.104.11) (Ping timeout: 255 seconds) |
| 16:19:17 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 16:20:48 | × | mbuf quits (~Shakthi@49.207.178.186) (Quit: Leaving) |
| 16:21:49 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
| 16:24:03 | → | hugo- joins (znc@verdigris.lysator.liu.se) |
| 16:25:04 | → | freeside joins (~mengwong@103.252.202.85) |
| 16:27:35 | × | rekahsoft quits (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-142.dsl.bell.ca) (Ping timeout: 260 seconds) |
| 16:29:55 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 16:32:16 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 16:48:02 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 16:48:17 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:49:07 | × | dsrt^ quits (~dsrt@c-76-105-96-13.hsd1.ga.comcast.net) (Remote host closed the connection) |
| 16:52:31 | → | cfricke joins (~cfricke@user/cfricke) |
| 17:05:31 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 17:06:08 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 17:06:13 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.8) |
| 17:06:40 | × | Square quits (~Square4@user/square) (Ping timeout: 265 seconds) |
| 17:11:55 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 17:19:57 | → | nate1 joins (~nate@98.45.169.16) |
| 17:20:35 | × | hugo- quits (znc@verdigris.lysator.liu.se) (Ping timeout: 264 seconds) |
| 17:23:08 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 17:24:12 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 17:24:48 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
| 17:24:58 | → | thegeekinside joins (~thegeekin@189.217.90.138) |
| 17:24:58 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 17:28:37 | × | EvanR quits (~EvanR@user/evanr) (Quit: Leaving) |
| 17:29:54 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
| 17:31:14 | → | vlad_ joins (~vlad@2a00:23c6:9822:4c01:8d7:7cf6:b928:388c) |
| 17:31:25 | → | gurkenglas joins (~gurkengla@dynamic-046-114-178-123.46.114.pool.telefonica.de) |
| 17:33:40 | → | akegalj joins (~akegalj@141-136-202-216.dsl.iskon.hr) |
| 17:34:59 | × | vlad quits (~vlad@2a00:23c6:9822:4c01:cd08:b330:8871:c381) (Ping timeout: 264 seconds) |
| 17:42:56 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 248 seconds) |
| 17:42:59 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 17:43:43 | × | irrgit_ quits (~irrgit@176.113.74.130) (Read error: Connection reset by peer) |
| 17:44:32 | → | hugo joins (znc@verdigris.lysator.liu.se) |
| 17:45:41 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 17:45:49 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 17:46:18 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 17:47:27 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 17:47:47 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 250 seconds) |
| 17:49:30 | × | hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 252 seconds) |
| 17:53:42 | → | hugo joins (znc@verdigris.lysator.liu.se) |
| 18:13:09 | → | corentin joins (~corentin@lfbn-rou-1-774-251.w90-108.abo.wanadoo.fr) |
| 18:20:30 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:31:37 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:32:05 | → | _xor joins (~xor@50.216.161.66.ded-dsl.fuse.net) |
| 18:32:52 | × | akegalj quits (~akegalj@141-136-202-216.dsl.iskon.hr) (Remote host closed the connection) |
| 18:39:15 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b9e9:a7af:521:d6d2) (Remote host closed the connection) |
| 18:41:20 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:44:17 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:44:38 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 18:44:48 | × | caryhartline quits (~caryhartl@2600:1700:2d0:8d30:49d9:74ac:3120:b38e) (Quit: caryhartline) |
| 18:49:58 | → | heraldo joins (~heraldo@user/heraldo) |
| 18:53:36 | → | ph88 joins (~ph88@ip5b426553.dynamic.kabel-deutschland.de) |
| 18:56:29 | × | mncheck quits (~mncheck@193.224.205.254) (Remote host closed the connection) |
| 18:56:47 | → | mncheck joins (~mncheck@193.224.205.254) |
| 18:59:59 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:00:36 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b9e9:a7af:521:d6d2) |
| 19:02:06 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:5076:d252:60bc:245f) |
| 19:03:11 | <heraldo> | I think I was in here barely coherent yesterday asking about this Steven Diehl WIWIK document. Lenses don't appear there, I trying to find why that might be. |
| 19:04:24 | <geekosaur> | you'd have to ask him. but not everyone thinks lenses are the greatest thing since sliced bread |
| 19:05:24 | <geekosaur> | (note: I do not claim to be one of them. I just haven't had much use for them so far, but I've been through a few tutorials) |
| 19:05:59 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 19:07:05 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 19:09:07 | <geekosaur> | it's also complicated by the fact that there are two major lens implementations (lens and optics), whose basics work the same way but differ in extensibility and error messages among other things |
| 19:09:21 | <sm> | I think they just aren't something you need to know when learning haskell. They can be worthwhile in large codebases. |
| 19:09:52 | <geekosaur> | I wouldn't call a decent chunk of what's in WIWIK "learning haskell" material either |
| 19:10:37 | <geekosaur> | programmer's intro to category theory, advanced TH, etc. |
| 19:11:16 | <sm> | so I guess it's his personal wishes |
| 19:13:20 | <yushyin> | it's in the title |
| 19:15:28 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:15:29 | <monochrom> | It's always personal. :) |
| 19:16:24 | <monochrom> | Next April 1st perhaps someone would post "what I wish I didn't know" |
| 19:16:45 | <geekosaur> | didn't snoyberg already do that one, seriously? |
| 19:16:51 | <monochrom> | haha |
| 19:17:02 | <sclv> | WIWIK is pretty old too fwiw |
| 19:17:40 | <monochrom> | Did he go like "I wish fewer people knew cabal so everyone used stack instead"? >:D |
| 19:18:03 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
| 19:19:02 | <geekosaur> | no, his complaints were about things like exceptions |
| 19:20:57 | <Rembane> | Aren't some of the exceptions notoriously tricky to handle? |
| 19:21:03 | Rembane | has very vague memories |
| 19:21:05 | <geekosaur> | yep |
| 19:21:10 | <monochrom> | I wish I didn't know comp.lang.functional or #haskell. They were time sinks that caused me much procrastination during my PhD. >:) (Excuses excuses.) |
| 19:21:24 | <geekosaur> | go look at MonadBaseControl sometime. it's scary |
| 19:21:51 | <geekosaur> | the things you have to do to reliably release resources in the presence of exceptions |
| 19:22:50 | × | gdd quits (~gdd@2001:470:1f13:187:feb5:520e:fb24:2b66) (Ping timeout: 260 seconds) |
| 19:23:00 | <monochrom> | Ironically actually they also helped with my PhD, namely everyone was like "reasoning under laziness is hard" inspiring me to "challenge accepted!" and that nailed my thesis topic. (You know, sometimes deciding on a topic at all is the most time-consuming part.) |
| 19:23:25 | <geekosaur> | and laziness makes it all worse because if you're not careful a lazy exception can leak out of your handler and get tripped later |
| 19:23:26 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 19:23:30 | → | gdd joins (~gdd@2001:470:1f13:187:1478:b52c:44e2:14d6) |
| 19:23:55 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 248 seconds) |
| 19:25:11 | <Rembane> | Can this be handled in a reasonable way in the runtime? So nobody needs to do MonadBaseControl anymore. |
| 19:25:33 | <monochrom> | Does the new native delimited continuattion help? |
| 19:26:19 | <geekosaur> | no idea, no idea. I am no expert on this topic |
| 19:26:51 | <monochrom> | Hrm, probably yes in the sense that you simply don't use monad transformers any more (a major factor of the problem). |
| 19:27:13 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 19:29:35 | <__monty__> | I think merijn regularly complains about GHC's exception handling. Too bad they're not here. |
| 19:29:53 | <__monty__> | Maybe it was signal handling. |
| 19:29:56 | <Rembane> | We should've memorized the summon merijn-spell. |
| 19:30:03 | <geekosaur> | merijn is usually signal handlin |
| 19:30:05 | <geekosaur> | g |
| 19:30:29 | <geekosaur> | which is really the same thing but kicked up to the OS level |
| 19:31:18 | <monochrom> | IMO GHC can't help it because Linux fundamentally trolls you with "the signal hits any thread the kernel feels like". |
| 19:31:31 | <geekosaur> | (signals are an abysmal way to implement OS level exceptions.) |
| 19:32:00 | <geekosaur> | actually there are pthread APIs for that, and afaict that claim isn't actually true (any more?) |
| 19:32:13 | <monochrom> | Then again I don't know which thread is the right thread to hit either. Yeah basically a 1970s design that doesn't work today. |
| 19:32:32 | <geekosaur> | wasn't a 70s design because there weren't threads in the 1970s |
| 19:32:42 | <monochrom> | Yeah I mean that. |
| 19:32:51 | <monochrom> | "It was a much simpler time." :D |
| 19:32:57 | <geekosaur> | I think they hit the main thread now, like everything else that doesn't grok threads |
| 19:33:24 | <monochrom> | That probably is a good choice. |
| 19:33:35 | <geekosaur> | with some specific exceptions and pthreads support for them (SEGV is sent to the thread that triggered it, for example) |
| 19:34:40 | → | bitmapper joins (uid464869@id-464869.lymington.irccloud.com) |
| 19:34:53 | <monochrom> | Yeah people already write the main thread to be the select/epoll event loop and signal-ready, so SIGINT and SIGUSR1 etc going there is a very safe bet. |
| 19:35:22 | <geekosaur> | and as best as I could tell when I researched this, "hits any thread" was (a) old Solaris pre-POSIX threads and (b) LinuxThreads |
| 19:35:39 | <geekosaur> | but LinuxThreads was always a rickety hack |
| 19:37:15 | × | chomwitt quits (~chomwitt@ppp-94-69-24-223.home.otenet.gr) (Ping timeout: 255 seconds) |
| 19:41:07 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 19:41:14 | → | ft joins (~ft@p4fc2a88b.dip0.t-ipconnect.de) |
| 19:42:01 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Quit: o/) |
| 19:43:55 | × | gurkenglas quits (~gurkengla@dynamic-046-114-178-123.46.114.pool.telefonica.de) (Ping timeout: 250 seconds) |
| 19:45:14 | → | Sciencentistguy joins (~sciencent@hacksoc/ordinary-member) |
| 19:45:53 | → | gurkenglas joins (~gurkengla@dynamic-089-204-154-028.89.204.154.pool.telefonica.de) |
| 19:50:43 | × | talismanick quits (~talismani@2601:200:c000:f7a0::fb70) (Remote host closed the connection) |
| 19:50:54 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Read error: Connection reset by peer) |
| 19:50:59 | → | Sciencentistguy8 joins (~sciencent@hacksoc/ordinary-member) |
| 19:51:40 | → | talismanick joins (~talismani@2601:200:c000:f7a0::fb70) |
| 19:52:51 | → | Parth joins (~Parth@203.110.242.30) |
| 19:53:38 | × | Parth quits (~Parth@203.110.242.30) (Client Quit) |
| 19:56:39 | <drlkf> | how can i transform a monad (MonadBaseControl IO m => m a) into a polysemy monad (Member (Embed IO) r => Sem r a) ? |
| 19:57:02 | → | Albina_Pavlovna joins (~Albina_Pa@047-230-050-118.res.spectrum.com) |
| 19:58:15 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 265 seconds) |
| 19:58:25 | → | enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
| 19:58:28 | × | Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Quit: stopping for now...) |
| 19:59:11 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b9e9:a7af:521:d6d2) (Remote host closed the connection) |
| 20:00:07 | → | Sciencentistguy joins (~sciencent@hacksoc/ordinary-member) |
| 20:01:36 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 20:02:18 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 20:03:01 | × | Sciencentistguy8 quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 276 seconds) |
| 20:04:25 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 20:09:44 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 20:14:11 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 20:14:24 | × | NiceBird quits (~NiceBird@185.133.111.196) (Ping timeout: 248 seconds) |
| 20:17:38 | × | shapr quits (~user@c-68-35-51-250.hsd1.al.comcast.net) (Ping timeout: 252 seconds) |
| 20:22:24 | → | pavonia joins (~user@user/siracusa) |
| 20:25:58 | → | shapr joins (~user@c-68-35-51-250.hsd1.al.comcast.net) |
| 20:31:05 | × | son0p quits (~ff@181.136.122.143) (Ping timeout: 260 seconds) |
| 20:48:29 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 250 seconds) |
| 20:51:27 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 20:53:59 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 20:59:40 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b9e9:a7af:521:d6d2) |
| 21:03:22 | × | michalz quits (~michalz@185.246.207.203) (Remote host closed the connection) |
| 21:03:39 | × | Albina_Pavlovna quits (~Albina_Pa@047-230-050-118.res.spectrum.com) (Quit: ZZZzzz…) |
| 21:04:05 | × | dunj3 quits (~dunj3@kingdread.de) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
| 21:04:11 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b9e9:a7af:521:d6d2) (Ping timeout: 248 seconds) |
| 21:06:46 | → | captnemo joins (~captnemo@193.32.127.232) |
| 21:13:04 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 21:14:15 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 21:20:40 | <tusko> | How does a monad in Haskell relate to a monad from algebra? |
| 21:21:03 | <Hecate> | tusko: it does when you're doing CT in Haskell |
| 21:21:34 | → | nate1 joins (~nate@98.45.169.16) |
| 21:24:44 | → | Square joins (~Square4@user/square) |
| 21:25:56 | → | vgtw_ joins (~vgtw@user/vgtw) |
| 21:26:22 | × | captnemo quits (~captnemo@193.32.127.232) (Quit: WeeChat 3.8) |
| 21:26:52 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds) |
| 21:27:05 | × | vgtw quits (~vgtw@user/vgtw) (Ping timeout: 260 seconds) |
| 21:27:05 | <ski> | tusko : `join' is the "multiplication" and `return'/`pure' is the "neutral element" |
| 21:28:15 | <tomsmeding> | :t join |
| 21:28:16 | <lambdabot> | Monad m => m (m a) -> m a |
| 21:32:32 | × | taupiqueur quits (~taupiqueu@2a02-842a-8180-4601-7049-0e98-928a-bbc8.rev.sfr.net) (Quit: WeeChat 3.8) |
| 21:37:46 | → | jmorris joins (uid537181@id-537181.uxbridge.irccloud.com) |
| 21:40:22 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 21:41:28 | <tusko> | :t return |
| 21:41:29 | <lambdabot> | Monad m => a -> m a |
| 21:41:47 | <tusko> | hm |
| 21:45:04 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
| 21:45:24 | <ncf> | type f ~> g = f a -> g a |
| 21:45:34 | <ncf> | return :: Monad m => Identity ~> m |
| 21:45:46 | <ncf> | join :: Monad m => Compose m m ~> m |
| 21:45:50 | <ncf> | tusko: does this help? |
| 21:46:14 | <ncf> | (i'm not sure what definition of monad you're familiar with) |
| 21:46:17 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
| 21:46:21 | <tusko> | I just began learning Haskell so I can't parse the syntax completely yet. I understand it is giving a chain of computation so-to-speak |
| 21:46:35 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 21:46:40 | <tusko> | Um, mathematically I was thinking of a monad as being a set and an operation |
| 21:47:13 | <ncf> | are you thinking of a monoid? |
| 21:47:19 | <tusko> | I may be yes |
| 21:47:29 | <tusko> | I actually know about 0 CT |
| 21:47:47 | <tomsmeding> | then please do not try to learn haskell from a CT perspective |
| 21:48:02 | <geekosaur> | it'll just confuse you |
| 21:48:04 | <tomsmeding> | that only helps people who know at lot of CT already so that it helps them grasp the concepts |
| 21:48:08 | <geekosaur> | and CT gains you very little |
| 21:48:11 | <tomsmeding> | that |
| 21:48:37 | <mauke> | (a monoid is a set, an operation, and an element) |
| 21:48:48 | <tomsmeding> | in any case a more operational intuition for the ideas (which you learn by using them in practice) is more useful in programming haskell than the CT view on the concepts :) |
| 21:50:13 | <monochrom> | If you already know monoids, then the standard Haskell library has the Monoid class. |
| 21:50:16 | ski | hands ncf a `forall a. ' |
| 21:50:38 | <monochrom> | Although, as usual, this is of little use if you don't know Haskell, namely if you don't even know type classes in Haskell. |
| 21:55:24 | <tromp> | in a list comprehension, how can i assign x0, x1 to first elements of a list xs, and skip it if list shorter than 2 elements? |
| 21:56:48 | <tromp> | i can do length xs > 1, let (x0:x1:_) = xs, but is there a more concise expression? |
| 21:56:57 | <ski> | > [(x,y) | x:y:_ <- ["abcde"]] |
| 21:56:58 | <lambdabot> | [('a','b')] |
| 21:56:58 | <ski> | > [(x,y) | x:y:_ <- ["a"]] |
| 21:57:00 | <lambdabot> | [] |
| 21:57:28 | <tromp> | oh, i need to put xs itself in a list, ok |
| 21:57:37 | <tromp> | thx |
| 21:57:38 | <ski> | > [(x,y) | x:y:_ <- tails "abcde"] |
| 21:57:40 | <lambdabot> | [('a','b'),('b','c'),('c','d'),('d','e')] |
| 21:58:09 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: Leaving) |
| 21:58:53 | <ski> | (and brackets in that `let' are redundant) |
| 21:58:53 | <monochrom> | Must it be list comprehension? |
| 21:59:26 | <monochrom> | case xs of x:y:_ -> (x,y); _ -> skip |
| 21:59:32 | → | captnemo joins (~captnemo@193.32.127.232) |
| 21:59:33 | → | Midjak joins (~Midjak@82.66.147.146) |
| 21:59:44 | <monochrom> | Although, I don't know what "skip" means and why it should have the same type as (x,y). |
| 22:00:13 | <ski> | you could use `((x,y) :)' and `id' |
| 22:01:43 | <monochrom> | Actually, I have a cunning plan! Use a bicontinuation! |
| 22:01:45 | <ski> | hmm .. i guess it could be nice if one could use `case' (and `if') commands in a list comprehension |
| 22:01:54 | <ski> | bi ? |
| 22:01:58 | <monochrom> | case xs of x:y:_ -> foo x y; _ -> bar |
| 22:02:09 | <ski> | like `ContT o (ContT p m)' ? |
| 22:02:28 | <ski> | ah, alternative continuations |
| 22:02:33 | <sm> | you can use pattern matching and if in list comprehensions, surely |
| 22:02:47 | <ski> | yes, but you can't use `if' *commands* |
| 22:02:53 | <mastarija> | :t skip |
| 22:02:54 | <lambdabot> | error: Variable not in scope: skip |
| 22:02:54 | <ski> | (you can use `if' *expressions*) |
| 22:03:00 | <monochrom> | This is because right now I'm studying LogicT = forall r. (a -> m r -> m r) -> m r -> m r :) |
| 22:03:00 | × | Midjak quits (~Midjak@82.66.147.146) (Client Quit) |
| 22:03:14 | × | mastarija quits (~mastarija@2a05:4f46:e03:6000:4e5d:6e20:58be:8722) (Quit: WeeChat 3.7.1) |
| 22:03:36 | <ski> | monochrom : right .. i made an arbitrary depth continuation stack version of that |
| 22:03:52 | <ski> | (user determines the depth) |
| 22:05:08 | <ski> | @unmtl ContT () (ContT r m) a |
| 22:05:08 | <lambdabot> | (a -> (() -> m r) -> m r) -> (() -> m r) -> m r |
| 22:06:07 | <monochrom> | That's interesting. Perhaps LogicT is a stack of two Codensities like that. |
| 22:06:37 | <ski> | not quite two `Codensity's |
| 22:08:06 | <ski> | papers "Abstracting Control" and "Representing Control" by Andrzej Filinski & Olivier Danvy are relelvant .. as is a paper about doing logic programming in Haskell by Silvija Seres & Mike Spivey, and a follow-up paper about typed logic variables in Haskell, by Koen Claessen |
| 22:08:55 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 268 seconds) |
| 22:09:39 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 22:10:53 | → | gmg joins (~user@user/gehmehgeh) |
| 22:11:08 | × | gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
| 22:17:54 | × | cassiopea quits (~cassiopea@user/cassiopea) (Ping timeout: 255 seconds) |
| 22:19:14 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 22:24:11 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 22:33:27 | × | enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
| 22:36:35 | × | sphynx quits (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) (Ping timeout: 256 seconds) |
| 22:36:53 | → | sphynx joins (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) |
| 22:39:45 | → | son0p joins (~ff@181.136.122.143) |
| 22:39:57 | <ph88> | does someone know a function with this signature ? Monad m => (a -> m (Either b c)) -> [a] -> m (Either b [c]) |
| 22:42:50 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:42:52 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 22:42:58 | <ski> | @type (runExceptT .) . mapM . (ExceptT .) |
| 22:42:59 | <lambdabot> | (Traversable t, Monad m) => (a -> m (Either e b)) -> t a -> m (Either e (t b)) |
| 22:44:16 | <ph88> | nice solution ski |
| 22:44:23 | <ph88> | can it be done without the monad transformer ? |
| 22:44:40 | <ski> | manually |
| 22:45:01 | <ph88> | ok i will try to create my own function helps to understand as well |
| 22:46:31 | × | captnemo quits (~captnemo@193.32.127.232) (Quit: WeeChat 3.8) |
| 22:46:32 | <c_wraith> | :t \f -> fmap sequence . traverse f |
| 22:46:33 | <lambdabot> | (Traversable t, Monad m, Applicative f) => (a1 -> f (m a2)) -> t a1 -> f (m (t a2)) |
| 22:46:46 | <c_wraith> | I'm half asleep, but that looks... maybe right? |
| 22:48:01 | <geekosaur> | % (\f -> fmap sequence . traverse f) @[] @(Either _) |
| 22:48:01 | <yahb2> | <interactive>:32:1: error: ; • Cannot apply expression of type ‘(a0 -> f0 (m0 a1)) ; -> t0 a0 -> f0 (m0 (t0 a1))’ ; to a visible type argument ‘[]’ ... |
| 22:48:11 | <geekosaur> | ah well |
| 22:48:33 | <geekosaur> | % :set -fprint-explicit-foralls |
| 22:48:34 | <yahb2> | <no output> |
| 22:48:52 | <geekosaur> | % :t \f -> fmap sequence . traverse f |
| 22:48:52 | <yahb2> | \f -> fmap sequence . traverse f ; :: forall {t :: * -> *} {m :: * -> *} {f :: * -> *} {a1} {a2}. ; (Traversable t, Monad m, Applicative f) => ; (a1 -> f (m a2)) -> t a1 -> f (m (t a2)) |
| 22:50:14 | <geekosaur> | % :t \f -> fmap @(Either _) sequence . traverse @[] f |
| 22:50:14 | <yahb2> | \f -> fmap @(Either _) sequence . traverse @[] f ; :: forall {m :: * -> *} {a1} {w} {a2}. ; Monad m => ; (a1 -> Either w (m a2)) -> [a1] -> Either w (m [a2]) |
| 22:50:47 | <[Leary]> | :t \f -> getCompose . traverse (Compose . f) |
| 22:50:48 | <lambdabot> | forall k1 (t :: * -> *) (f :: k1 -> *) (g :: * -> k1) a b. (Traversable t, Applicative (Compose f g)) => (a -> f (g b)) -> t a -> f (g (t b)) |
| 22:50:50 | <ph88> | c_wraith, geekosaur that looks great :) |
| 22:51:01 | <[Leary]> | Applicatives compose. :) |
| 22:51:05 | <ph88> | how could i get to this result myself .. |
| 22:52:06 | <c_wraith> | I looked at the type of traverse, mentally expanded the type variables, went "I just need to flip the part inside the m. Ah, sequence does that." |
| 22:52:39 | <ph88> | c_wraith, alright i'll stare at it some more see if i can see what you saw |
| 22:53:27 | <c_wraith> | as for starting with traverse... I always start with traverse. :) |
| 22:54:46 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
| 22:55:41 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 22:56:56 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:58:04 | <geekosaur> | more to the point, the "schema" if your request looks a lot like a map or traversal ((a -> x b) -> [a] -> x [b]) |
| 22:58:07 | <geekosaur> | for some x |
| 22:59:57 | × | vlad_ quits (~vlad@2a00:23c6:9822:4c01:8d7:7cf6:b928:388c) (Quit: Leaving) |
| 23:01:01 | <c_wraith> | also, don't tell anyone, but mapM and traverse are basically the same thing :) |
| 23:05:57 | <monochrom> | For a new 2023 edition of "what I wish I knew" :) |
| 23:06:02 | × | adanwan_ quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 255 seconds) |
| 23:06:37 | × | Wojciech_K quits (~Wojciech_@2a01:4f9:6a:18a8::239) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
| 23:06:47 | → | Wojciech_K joins (~Wojciech_@2a01:4f9:6a:18a8::239) |
| 23:07:12 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 23:10:28 | × | trev quits (~trev@user/trev) (Remote host closed the connection) |
| 23:10:51 | <c_wraith> | It's worth note that ski's implementation has different semantics than the other ones presented. |
| 23:10:55 | → | mauke_ joins (~mauke@user/mauke) |
| 23:11:30 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 260 seconds) |
| 23:12:49 | × | mauke quits (~mauke@user/mauke) (Ping timeout: 276 seconds) |
| 23:12:49 | mauke_ | is now known as mauke |
| 23:13:03 | × | tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 268 seconds) |
| 23:13:46 | → | tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
| 23:13:48 | <c_wraith> | ph88: the type you provided has two major possibilities - do you want it to sequence together actions in the m type even after one produces a Left, or not? |
| 23:13:49 | <ph88> | i'm having trouble to decompose the function. from \f -> fmap sequence . traverse f to \f xs -> <something with dot-operator> |
| 23:14:58 | <c_wraith> | Well, the dot operator goes away. \f xs -> fmap sequence (traverse f xs) |
| 23:15:12 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
| 23:15:57 | <ph88> | c_wraith, after the first left there is nothing to "sequence together" .. could still run the function for possible side effects but that is not necessary for my use case |
| 23:16:30 | <c_wraith> | ph88: ski's definition and mine have opposite behavior on that matter |
| 23:16:47 | <ph88> | i would like the one that stops processing as soon as the first Left was found |
| 23:17:04 | <ph88> | either explicitly or by haskell's lazy behavior |
| 23:17:30 | <c_wraith> | lazy evaluation won't help you in an arbitrary m. |
| 23:18:32 | <c_wraith> | anyway, it should be no surprise that ski's version short-circuits, as that's the entire point of ExceptT |
| 23:19:30 | <ph88> | what about my written version .. does it short circuit like i think it does ? https://bpa.st/47I4E |
| 23:20:15 | <c_wraith> | I was slightly surprised to realize [Leary]'s version doesn't short-circuit, until I realized it was restricted to the Applicative interfaces of each portion, which means it can't stop early either. You need Monad for that. |
| 23:20:42 | <ph88> | hmm i see |
| 23:21:26 | → | notzmv joins (~zmv@user/notzmv) |
| 23:21:33 | <c_wraith> | And my version ignored the entire possibility of short-circuiting, as I treated each nesting of types totally independently. |
| 23:21:47 | <c_wraith> | I never composed the two to work together at all |
| 23:25:20 | → | Sgeo_ joins (~Sgeo@user/sgeo) |
| 23:26:36 | × | zeenk quits (~zeenk@2a02:2f04:a307:2300::fba) (Quit: Konversation terminated!) |
| 23:27:01 | <tusko> | :t add |
| 23:27:02 | <lambdabot> | error: |
| 23:27:02 | <lambdabot> | • Variable not in scope: add |
| 23:27:02 | <lambdabot> | • Perhaps you meant one of these: |
| 23:27:05 | <[Leary]> | ph88: Your version doesn't look like it can shortcircuit, since the `foldM` is over `m`, not `Either b`. If you write the function with direct recursion instead, you'll probably get it right. |
| 23:27:07 | × | Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 276 seconds) |
| 23:27:31 | <c_wraith> | ph88: I think your version will short-circuit effects, but still traverse the entire list. That's just based on the fact that you manually handle Left as inputs in the folding function |
| 23:28:31 | <geekosaur> | tusko, you may want to play in /query rather than in the channel |
| 23:28:38 | <ph88> | alright guys thanks for the review |
| 23:29:32 | <c_wraith> | [Leary]: I think it does skip effects, as calling f is conditional on whether the computation so far has produced a Left or not |
| 23:30:22 | <c_wraith> | But it does still traverse the rest of the structure - it has no way to bail out of the recursion early. |
| 23:30:42 | <[Leary]> | Ah, right. |
| 23:31:33 | <c_wraith> | ph88: it's also worth note that your code has an O(n^2) blowup hidden in there. |
| 23:31:54 | <c_wraith> | ph88: you're constantly adding elements to the back of a list. That's a very bad case for the list type. |
| 23:32:09 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 23:32:15 | <ph88> | i do that all the time :/ |
| 23:32:31 | <ph88> | because otherwise the list goes in the wrong order |
| 23:32:48 | × | caryhartline quits (~caryhartl@2600:1700:2d0:8d30:5076:d252:60bc:245f) (Quit: caryhartline) |
| 23:33:36 | <ph88> | don't really see a way to avoid that with list type |
| 23:33:40 | <c_wraith> | a call to reverse in a post-processing pass is a lot cheaper than constantly appending to the wrong side |
| 23:33:41 | <geekosaur> | you get better asymptotics if you build it from the front and reverse once at the end |
| 23:33:49 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 23:34:05 | <monochrom> | Sometimes there are alternative algorithms that only prepend, and still outputs in the right order. For example consider why "map f (x:xs) = f xs : map f xs" does not use tail recursion and it's actually more efficient. |
| 23:34:29 | <c_wraith> | Though usually you can write the code to generate things in the right order if you're careful. as monochrom's example points out |
| 23:35:06 | <ph88> | <3 |
| 23:35:20 | <monochrom> | And in case there is no alternative algorithm, you can then try outputting [X]->[X] instead of [X], so that appending x is "recursive call . (x :)", this helps with efficiency. |
| 23:35:32 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 23:36:00 | × | Square quits (~Square4@user/square) (Ping timeout: 260 seconds) |
| 23:37:23 | <ph88> | monochrom, i didn't really get that last point |
| 23:37:48 | <monochrom> | You can read more on that under "diff list". |
| 23:38:31 | <ph88> | ok thanks |
| 23:46:08 | × | acidjnk quits (~acidjnk@p200300d6e715c470b96f59b95ab3d487.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 23:50:14 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 23:56:50 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 23:57:01 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds) |
| 23:58:07 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 23:58:07 | Lord_of_Life_ | is now known as Lord_of_Life |
| 23:58:43 | × | masterbuilder quits (~masterbui@user/masterbuilder) (Remote host closed the connection) |
All times are in UTC on 2023-04-03.