Logs on 2021-07-08 (liberachat/#haskell)
| 00:08:45 | <Axman6> | Do we actually have a good resource for starting a new haskell project? I was asking the other day about something for scaffolding options, without particularly satisfying answers |
| 00:09:21 | → | vish joins (~igloo@24.130.32.174) |
| 00:09:24 | <Axman6> | stack new isn't terrible, but the docs say it's been labled as up for replacement for a long time, and I'm preferring cabal these days |
| 00:10:07 | <monochrom> | The cabal user guide may have a section on this. I haven't checked. |
| 00:10:31 | <geekosaur> | cabal init creates very barebones projects |
| 00:10:40 | <monochrom> | A lot of bloggers would have very opinionated ones. I avoid knowing them. |
| 00:10:54 | × | vish quits (~igloo@24.130.32.174) (Remote host closed the connection) |
| 00:12:36 | <monochrom> | Some haskell books have a short chapter for this too. |
| 00:14:41 | <monochrom> | Me, I learned by taking a look at the cabal user guide (and a much older, terser, more incomplete edition at that), and taking a look at some package sources. |
| 00:15:43 | <monochrom> | and playing a bit with cabal init (now cabal init -i and answering "I want to answer a lot of questions") |
| 00:15:53 | <AWizzArd> | Servant: type API = "foo" :> QueryParam "bar" String :> Get '[JSON] Baz |
| 00:16:03 | <AWizzArd> | How can I explain that "bar" is required? |
| 00:16:28 | <AWizzArd> | Can I do QueryParam' [Required] "bar" or something like that? |
| 00:16:41 | <monochrom> | BTW I am still baffled that after I have taken the trouble to say "-i" they feel like making me repeat myself. |
| 00:18:23 | <monochrom> | Every type parameter is required, at least as long as you want to end up with the desired kind. What is there to explain? The String there is also required. The Baz there is also required. |
| 00:18:32 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 00:19:29 | <AWizzArd> | monochrom: what I mean is: my handler would get a Maybe String but I want it without the Maybe. |
| 00:19:48 | <AWizzArd> | If the user does not supply the query parameter then my handler wouldn’t get called at all. |
| 00:20:33 | × | trufas quits (~trufas@177.240.218.218) (Ping timeout: 265 seconds) |
| 00:20:46 | → | trufas joins (~trufas@177.240.218.218) |
| 00:21:08 | <AWizzArd> | type QueryParam = QueryParam' '[Optional, Strict] |
| 00:21:24 | × | Atum__ quits (~IRC@user/atum/x-2392232) (Quit: Atum__) |
| 00:22:47 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 252 seconds) |
| 00:24:34 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 00:26:12 | × | Deide quits (~Deide@user/deide) (Quit: Seeee yaaaa) |
| 00:28:11 | → | mud joins (~mud@user/kadoban) |
| 00:28:58 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 00:31:49 | → | andreabedini joins (~andreabed@8s8kj6nms09jvtyb2xjc.ip6.superloop.com) |
| 00:31:53 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 00:33:14 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 252 seconds) |
| 00:34:28 | <Axman6> | you can replace Optional with Required right? |
| 00:34:54 | × | zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!) |
| 00:36:00 | × | spruit11 quits (~quassel@2a02:a467:ccd6:1:f403:cf1e:97b5:1c9b) (Ping timeout: 252 seconds) |
| 00:36:11 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds) |
| 00:36:33 | → | spruit11 joins (~quassel@2a02:a467:ccd6:1:f403:cf1e:97b5:1c9b) |
| 00:38:40 | → | spruit11_ joins (~quassel@86-82-44-193.fixed.kpn.net) |
| 00:39:47 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 00:41:03 | × | spruit11 quits (~quassel@2a02:a467:ccd6:1:f403:cf1e:97b5:1c9b) (Ping timeout: 252 seconds) |
| 00:41:42 | → | cjb joins (~cjb@user/cjb) |
| 00:44:58 | → | derelict joins (~derelict@user/derelict) |
| 00:45:48 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 00:48:39 | × | haykam1 quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
| 00:48:42 | → | haykam2 joins (~haykam@static.100.2.21.65.clients.your-server.de) |
| 00:54:35 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 00:58:18 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 01:04:42 | × | mud quits (~mud@user/kadoban) (Ping timeout: 252 seconds) |
| 01:06:37 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 01:07:49 | <AWizzArd> | Axman6: yeah |
| 01:08:07 | <AWizzArd> | Axman6: But do you know hat the difference between Strict and Required is? |
| 01:08:20 | <AWizzArd> | And how can a parameter be optional but strict at the same time? |
| 01:09:00 | <AWizzArd> | Axman6: we can do this for example: QueryParam' '[Required] "bar" Text |
| 01:10:18 | → | roboto_el_gato joins (~roboto_el@2600:1700:7df0:4f30:ec10:cbf7:f7cc:3882) |
| 01:12:22 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 01:15:03 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 01:16:57 | × | beka quits (~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 258 seconds) |
| 01:17:09 | <qrpnxz> | i saw a pretty cool talk about lifting types into kinds, is it possible to list, say, Int into a kind right now? |
| 01:17:59 | → | mud joins (~mud@user/kadoban) |
| 01:18:28 | <geekosaur> | DataKinds extension |
| 01:18:44 | <geekosaur> | Int might cause confusion with type-level naturals though |
| 01:19:30 | <geekosaur> | although I guess you could use a tick to distinguish '1 :: 'Int from 1 the typenat |
| 01:21:02 | <qrpnxz> | nice |
| 01:21:02 | <qrpnxz> | the talk was using like peano numbers which was cool but totally impractical. If you can just use real numbers that super nice |
| 01:21:58 | <c_wraith> | unfortunately, Nat is all there is for numbers at the type level now |
| 01:23:41 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:cdb:cabc:a7c7:75c9) (Remote host closed the connection) |
| 01:26:08 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:cdb:cabc:a7c7:75c9) |
| 01:35:23 | × | xff0x quits (~xff0x@2001:1a81:539d:3600:dd23:6975:e62a:a95) (Ping timeout: 252 seconds) |
| 01:37:08 | → | xff0x joins (~xff0x@2001:1a81:53dc:b800:8c77:48f3:1e3:3060) |
| 01:37:53 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:41:08 | → | notzmv joins (~zmv@user/notzmv) |
| 01:43:42 | → | neurocyte404 joins (~neurocyte@45.93.108.182) |
| 01:43:42 | × | neurocyte404 quits (~neurocyte@45.93.108.182) (Changing host) |
| 01:43:42 | → | neurocyte404 joins (~neurocyte@user/neurocyte) |
| 01:45:31 | → | tlaxkit joins (~hexchat@170.253.37.3) |
| 01:46:21 | <Axman6> | just implement Rational using Nat and then you've got pretty much everything you could need... >_> |
| 01:47:36 | × | neurocyte40 quits (~neurocyte@user/neurocyte) (Ping timeout: 252 seconds) |
| 01:47:36 | neurocyte404 | is now known as neurocyte40 |
| 01:48:09 | × | mud quits (~mud@user/kadoban) (Ping timeout: 252 seconds) |
| 01:48:44 | → | mud joins (~mud@user/kadoban) |
| 01:51:32 | × | tlaxkit quits (~hexchat@170.253.37.3) (Quit: Leaving) |
| 01:51:37 | <Axman6> | I wonder if you could implement fixed point type level numbers too |
| 01:54:36 | → | finsternis joins (~X@23.226.237.192) |
| 01:56:33 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 02:00:40 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 246 seconds) |
| 02:04:04 | × | alx741 quits (~alx741@181.196.69.147) (Quit: alx741) |
| 02:07:19 | × | dextaa quits (~DV@aftr-37-201-214-197.unity-media.net) (Ping timeout: 246 seconds) |
| 02:08:05 | → | dextaa joins (~DV@aftr-37-201-214-197.unity-media.net) |
| 02:08:52 | × | leah2 quits (~leah@vuxu.org) (Read error: Connection reset by peer) |
| 02:11:52 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 02:12:11 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 02:12:13 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 246 seconds) |
| 02:17:38 | × | zebrag quits (~chris@user/zebrag) (Remote host closed the connection) |
| 02:23:25 | × | td_ quits (~td@94.134.91.101) (Ping timeout: 246 seconds) |
| 02:23:57 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:23:58 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (sodium.libera.chat (Nickname regained by services))) |
| 02:23:58 | finn_elija | is now known as FinnElija |
| 02:24:19 | <lechner> | Hi, i have ByteString confusion. Would somone please explain to me where the 'toStrict' has to go? Thanks! https://paste.debian.net/1203748/ |
| 02:25:19 | → | td_ joins (~td@94.134.91.165) |
| 02:29:05 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 02:29:44 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 02:34:34 | → | kadobanana joins (~mud@user/kadoban) |
| 02:34:34 | × | mud quits (~mud@user/kadoban) (Read error: Connection reset by peer) |
| 02:40:18 | <oak-> | <AWizzArd "Axman6: But do you know hat the "> Strict only means if the parsing fails, then the servant throws error. The other option is Lenient, then you get Either Text a, and if the parsing fails then you get the Left which contains the error text |
| 02:44:35 | × | eight quits (~eight@user/eight) (Ping timeout: 265 seconds) |
| 02:45:35 | → | wei2912 joins (~wei2912@112.199.250.21) |
| 02:48:39 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 02:50:01 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
| 02:50:25 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 02:50:28 | <oak-> | lechner: you have various choices here :) you could also use the unpack from ByteString.Lazy library, then you don't need to convert it to strict ByteString first, or use Data.ByteString.Lazy.Char8.putStrLn to print the lazy bytestring directly |
| 02:51:07 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 02:51:21 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 02:51:21 | <oak-> | but strict answer to your question :) GZip.decompress returns Lazy Bytestrings, so you would need to pass the output from GZip.decompress to toStrict function |
| 02:52:34 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
| 02:55:55 | × | Kaipi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer) |
| 02:56:08 | → | Kaipi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 02:56:34 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 240 seconds) |
| 02:58:20 | × | Reyu[M] quits (~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection) |
| 02:58:53 | → | Reyu[M] joins (~reyureyuz@matrix.reyuzenfold.com) |
| 02:58:53 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 03:02:59 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds) |
| 03:10:03 | → | eggplant_ joins (~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) |
| 03:10:06 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 03:10:19 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:cdb:cabc:a7c7:75c9) (Ping timeout: 246 seconds) |
| 03:16:56 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 03:22:18 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 258 seconds) |
| 03:28:08 | × | cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds) |
| 03:28:43 | → | cheater joins (~Username@user/cheater) |
| 03:30:30 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 03:32:00 | <lechner> | oak-: thanks! |
| 03:32:06 | → | Izem joins (~Izem@bras-base-london1483w-grc-42-65-95-172-41.dsl.bell.ca) |
| 03:37:03 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
| 03:43:07 | → | tubogram joins (~tubogram@user/tubogram) |
| 03:45:45 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 03:46:51 | <janus> | > maybe (pure Nothing) (pure . Just . (+ 1)) (Just 5) |
| 03:46:52 | <lambdabot> | error: |
| 03:46:52 | <lambdabot> | • Ambiguous type variable ‘f0’ arising from a use of ‘show_M809825357370... |
| 03:46:53 | <lambdabot> | prevents the constraint ‘(Show |
| 03:47:18 | <janus> | join <$> traverse (pure . Just . (+ 1)) (Just 5) |
| 03:47:25 | <janus> | wither (pure . Just . (+ 1)) (Just 5) |
| 03:48:08 | <janus> | which one is clearer? i want to like 'wither' but i feel like it is pretty unknown... |
| 03:48:53 | ← | Izem parts (~Izem@bras-base-london1483w-grc-42-65-95-172-41.dsl.bell.ca) (Good Bye) |
| 03:50:26 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
| 03:55:36 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:57:42 | → | chase joins (~chase@89.45.224.218) |
| 03:58:04 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 03:58:54 | <monochrom> | fmap (+ 1) |
| 04:02:16 | → | MQ-17J joins (~MQ-17J@8.21.10.15) |
| 04:05:58 | <janus> | right, i was thinking i'd get that answer :P but the point is that the composed function can be effectful... in practise it will be doing network IO |
| 04:06:26 | → | dunkeln joins (~dunkeln@188.70.10.207) |
| 04:07:51 | <janus> | i guess i am really thinking in the abstraction level that 'wither' operates in, but when writing haskell it seems so difficult to decide whether the abstraction level you wanna work with, which is sometimes too powerful, is worth its weight... |
| 04:08:24 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 252 seconds) |
| 04:08:29 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:10:49 | <janus> | i just have to accept the fact that there is no one way to do it, and embrace politics :( |
| 04:12:07 | → | arjun joins (~Srain@user/arjun) |
| 04:16:33 | → | hexreel joins (~hr@69.233.98.238) |
| 04:19:16 | → | oxide joins (~lambda@user/oxide) |
| 04:36:02 | × | chase quits (~chase@89.45.224.218) (Ping timeout: 272 seconds) |
| 04:37:26 | <lechner> | Hi, how can I print the value in line 20 and also save it in a file, please? I'm stuck inside the monad. Thanks! https://paste.debian.net/1203754/ |
| 04:42:22 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 04:45:13 | → | a6a45081-2b83 joins (~aditya@106.214.66.197) |
| 04:46:26 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 04:50:46 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
| 04:51:30 | <oxytocat> | instead of using pointfree style, you can name the result and then use it more than once |
| 04:51:48 | <lechner> | with <- ? |
| 04:51:57 | <oxytocat> | yeah |
| 04:52:25 | <oxytocat> | instead of `receive responder >>=` you can do `msg <- receive responder` |
| 04:52:33 | <lechner> | i tried that |
| 04:52:45 | <lechner> | how do i use the result, please? |
| 04:53:44 | <lechner> | i tried to feed it in with >>= but that did not work |
| 04:53:44 | <oxytocat> | the line that starts with `liftIO` is a chain of function composition, `>>=` passes the result from `receive responder` to the other section |
| 04:54:19 | <oxytocat> | you can wrap the whole expression in parenthesis and pass `msg` to it, like this: |
| 04:54:30 | <oxytocat> | `(liftIO . printf "Received request: [%s]\n" . unpack . GZip.decompress . fromStrict) msg` |
| 04:54:38 | <oxytocat> | or alternatively: |
| 04:54:44 | <oxytocat> | `liftIO . printf "Received request: [%s]\n" . unpack . GZip.decompress . fromStrict $ msg` |
| 04:54:48 | <oxytocat> | or alternatively: |
| 04:55:11 | <oxytocat> | `liftIO (printf "Received request: [%s]\n" (unpack (GZip.decompress (fromStrict msg))))` |
| 04:55:52 | <oxytocat> | note that `liftIO ...` and `msg <- ...` need to have the same indentation width |
| 04:56:21 | <lechner> | thatks! i understand all of that, except perhaps the entire purpose of LiftIO |
| 04:56:42 | <dsal> | :t liftIO |
| 04:56:43 | <lambdabot> | MonadIO m => IO a -> m a |
| 04:57:09 | <dsal> | If you have an mtl stack with IO at the bottom and need to run something in IO, liftIO gets you there. |
| 04:57:55 | <oxytocat> | the runZMQ has some capabilities beyond IO so it has a different type |
| 04:57:56 | → | acidjnk_new joins (~acidjnk@p200300d0c72b9526e1b6d7c282fb2b66.dip0.t-ipconnect.de) |
| 04:58:05 | <lechner> | what is mtl please? |
| 04:59:18 | <oxytocat> | check out https://github.com/soupi/haskell-study-plan#monad-transformers |
| 04:59:20 | <lechner> | what does the LiftIO do in this line, please? liftIO (printf "Received request: [%s]\n" (unpack (GZip.decompress (fromStrict msg)))) |
| 04:59:32 | <dsal> | :t liftIO -- it does that |
| 04:59:33 | <lambdabot> | MonadIO m => IO a -> m a |
| 04:59:50 | <lechner> | to me that is different from the other two |
| 04:59:56 | <dsal> | You're using runZMQ which is: runZMQ :: MonadIO m => (forall z. ZMQ z a) -> m a |
| 05:00:28 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 05:01:10 | <oxytocat> | the type for regular IO actions is `IO <something>` - this is a description (or recipe) for a computation that may run some IO actions and return a value of type <something> |
| 05:01:43 | <lechner> | yeah that part i understand |
| 05:02:03 | <oxytocat> | ZMQ has a different type than that, it wants to be able to describe actions that can do ZMQ stuff as well as regular IO actions |
| 05:02:32 | <oxytocat> | so it needs a different type than IO |
| 05:03:05 | <dsal> | Instead of directly specifying IO, it just specifies that it needs something monadic that knows how to get to IO. |
| 05:03:08 | <lechner> | so the LiftIO is specimic to System.ZMQ4.Monadic ? |
| 05:03:15 | <lechner> | specific |
| 05:03:30 | <dsal> | No, it's a method of MonadIO |
| 05:03:58 | <oxytocat> | liftIO is a function that many other types like ZMQ implement, so that users can run arbitrary IO actions while working in ZMQ type |
| 05:04:06 | <oxytocat> | or their respective types, actually |
| 05:04:28 | <dsal> | https://hackage.haskell.org/package/base-4.15.0.0/docs/Control-Monad-IO-Class.html |
| 05:04:53 | <lechner> | why is it needed to evaluate this expression? liftIO (printf "Received request: [%s]\n" (unpack (GZip.decompress (fromStrict msg)))) |
| 05:04:59 | <oxytocat> | for example ActionM from the scotty package that is used to describe web requests processing also implements that function |
| 05:05:10 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 272 seconds) |
| 05:05:13 | <lechner> | it comes after the print? |
| 05:05:23 | <oxytocat> | :t liftIO |
| 05:05:25 | <lambdabot> | MonadIO m => IO a -> m a |
| 05:05:55 | <oxytocat> | the whole expression to the right of liftIO |
| 05:06:02 | <oxytocat> | has the type `IO ()` |
| 05:06:26 | <oxytocat> | but anything running in ZMQ has a different type that relates to ZMQ |
| 05:07:15 | <oxytocat> | so liftIO takes the `IO ()` and transforms it to work within `m ()` |
| 05:07:21 | <lechner> | i see |
| 05:07:23 | <oxytocat> | where `m` is the relevant ZMQ type |
| 05:07:51 | <lechner> | but m is not named? |
| 05:07:59 | <oxytocat> | I'm not sure what it is because it is not specified here and the docs for zeromq-haskell are missing from hackage |
| 05:08:16 | <lechner> | yeah they did not generate |
| 05:08:24 | <oxytocat> | `liftIO` is a bit general, think like `print :: Show a => a -> String` |
| 05:08:52 | <oxytocat> | we know that print will work for any type that implements the `Show` interface |
| 05:09:12 | <oxytocat> | with liftIO we know that it will work for any `m` that implements the `MonadIO` interface |
| 05:09:20 | × | acidjnk_new quits (~acidjnk@p200300d0c72b9526e1b6d7c282fb2b66.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 05:09:47 | <dsal> | lechner: You can use any m as long as it has a MonadIO instance. It's a constraint, not a type. |
| 05:09:52 | <lechner> | it's about the caller though rather than the argument, right? |
| 05:10:08 | <oxytocat> | sorry print is actually `print :: Show a => a -> IO ()`, my mistake |
| 05:10:22 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 246 seconds) |
| 05:10:25 | <oxytocat> | yes, it's what the caller supplies generally |
| 05:10:44 | <dsal> | % liftIO . print $ (1,2,3) |
| 05:10:44 | <yahb> | dsal: (1,2,3) |
| 05:10:56 | <lechner> | what is the likely type of msg above please? |
| 05:12:01 | <oxytocat> | I expect it is ZMQ |
| 05:12:13 | <oxytocat> | oh, of msg? sorry |
| 05:12:14 | <oxytocat> | let's check |
| 05:12:38 | <lechner> | so with LiftIO, both the code to the right and to the left is effectful, yes |
| 05:13:27 | <oxytocat> | https://gitlab.com/twittner/zeromq-haskell/-/blob/develop/src/System/ZMQ4/Monadic.hs#L351 |
| 05:13:29 | <dsal> | liftIO just digs out the the IO and runs the supplied IO action. |
| 05:13:40 | <oxytocat> | this indicates that it is `ByteString` |
| 05:14:17 | <lechner> | dsal: like 'do'? |
| 05:14:45 | <dsal> | What do you mean? `do` doesn't, um, `do` anything. |
| 05:15:37 | <lechner> | sorry it's my second run at haskell. i thought do can print |
| 05:15:47 | <oxytocat> | `do` is just alternative syntax for `>>=` and `>>` |
| 05:15:48 | <dsal> | do is just syntax sugar. |
| 05:15:59 | <dsal> | @undo do { print "x" } |
| 05:15:59 | <lambdabot> | print "x" |
| 05:16:43 | <oxytocat> | check out this section, let me know if it makes it clearer: https://github.com/soupi/haskell-study-plan#do-notation |
| 05:16:53 | × | AgentM quits (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.) |
| 05:17:14 | <dsal> | > do { a <- Just 1; b <- Just 2; pure (a + b) } |
| 05:17:16 | <lambdabot> | Just 3 |
| 05:17:20 | <dsal> | @undo do { a <- Just 1; b <- Just 2; pure (a + b) } |
| 05:17:20 | <lambdabot> | Just 1 >>= \ a -> Just 2 >>= \ b -> pure (a + b) |
| 05:17:32 | <dsal> | It works with any monad, not just IO |
| 05:17:47 | <dsal> | In fact, because liftIO is required here, you can tell that it's not requiring IO. :) |
| 05:18:09 | <lechner> | which part isn't? |
| 05:19:01 | <dsal> | Which part isn't what? |
| 05:19:01 | <lechner> | which part isn't requiring IO? |
| 05:20:05 | → | AgentM joins (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) |
| 05:20:47 | <oxytocat> | the code in your snippet, lines 16 to 23, run in ZMQ, not IO. we can tell because this code is passed to the function `runZMQ` as an argument |
| 05:21:02 | × | AgentM quits (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Client Quit) |
| 05:21:19 | → | jneira joins (~jneira@212.8.115.226) |
| 05:21:43 | <dsal> | All the things in the `do` block in your `runZMQ` call. It requires some `m` such that `m` has a `MonadIO` instance, but it's not using `IO` directly. You have to explicitly `liftIO` to get to `IO` there. |
| 05:21:43 | <dsal> | It's a rather subtle detail, but if `do` were just for `IO`, you could `print` without lifting anything. |
| 05:21:50 | <dsal> | > let s = [1..5] in do { a <- s; b <- s; pure (a,b) } |
| 05:21:52 | <lambdabot> | [(1,1),(1,2),(1,3),(1,4),(1,5),(2,1),(2,2),(2,3),(2,4),(2,5),(3,1),(3,2),(3,... |
| 05:22:12 | <dsal> | @undo do { a <- s; b <- s; pure (a,b) } |
| 05:22:12 | <lambdabot> | s >>= \ a -> s >>= \ b -> pure (a, b) |
| 05:22:14 | → | sidv joins (~sidv@23.252.50.92) |
| 05:22:15 | <dsal> | (undo is kind of boring) |
| 05:22:39 | × | oxide quits (~lambda@user/oxide) (Ping timeout: 252 seconds) |
| 05:22:43 | <sidv> | Hey! Is this the right place to ask a question about haskell.nix? |
| 05:22:52 | <dsal> | It's pretty close. heh |
| 05:23:12 | <oxytocat> | right, do notation is just alternative syntax for `>>=`, and the type of `>>=` is: |
| 05:23:16 | <oxytocat> | :t (>>=) |
| 05:23:17 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 05:24:14 | <oxytocat> | so it works for any type that implements `Monad`. Such as `IO`, `Maybe`, `Either`, `ZMQ z`, and many more |
| 05:24:44 | <oxytocat> | so `do` will also work for these types, because it just translates the syntax to use `>>=` |
| 05:24:48 | <sidv> | I was trying to install haskell-language-server by putting it in tools in shellFor. However, this does not install haskell-language-server-wrapper. Without that, it seems like hls is not picking up all warnings/errors. Is there a way to also install the wrapper? |
| 05:27:21 | <arjun> | sidv: try ghcup? |
| 05:28:01 | <dsal> | ghcup sounds a bit like the opposite of haskell.nix |
| 05:28:04 | <sidv> | I'd ideally like to install it locally within the project :) |
| 05:29:05 | <dsal> | I only do the most basic stuff with haskell.nix, though and I've not tried HLS in a long time. |
| 05:30:43 | <sidv> | The problem might also be that I have to generate a hie.yaml |
| 05:31:24 | <sidv> | I guess my main problem is that I don't see all the warnings that I do when running cabal build |
| 05:33:20 | <sidv> | Hm it seems like hie.yaml is the main culprit |
| 05:33:39 | × | stefan-_ quits (~cri@42dots.de) (Ping timeout: 252 seconds) |
| 05:34:53 | <lechner> | oxytocat dsal: thanks for your help earlier. too late here now, but i'll be ack tomorrow. thanks! |
| 05:37:33 | → | notzmv joins (~zmv@user/notzmv) |
| 05:37:40 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 05:37:59 | → | stefan-_ joins (~cri@42dots.de) |
| 05:43:37 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 246 seconds) |
| 05:46:35 | → | Cajun joins (~Cajun@ip98-163-211-112.no.no.cox.net) |
| 05:47:19 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 05:48:35 | → | kenran joins (~kenran@200116b82bdcfa0070f86b22d449a64a.dip.versatel-1u1.de) |
| 05:51:22 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 05:52:30 | × | sheepduck quits (~sheepduck@user/sheepduck) (Ping timeout: 252 seconds) |
| 05:52:37 | × | sidv quits (~sidv@23.252.50.92) (Ping timeout: 246 seconds) |
| 05:53:53 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:57:27 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 05:57:45 | → | Obo joins (~roberto@94.191.137.122.mobile.tre.se) |
| 05:58:40 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 05:58:50 | × | dunkeln quits (~dunkeln@188.70.10.207) (Ping timeout: 252 seconds) |
| 06:02:36 | × | son0p quits (~ff@181.136.122.143) (Ping timeout: 256 seconds) |
| 06:07:27 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 06:09:12 | × | azeem quits (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Remote host closed the connection) |
| 06:09:22 | → | azeem joins (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) |
| 06:09:46 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 240 seconds) |
| 06:11:21 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 06:11:40 | × | Obo quits (~roberto@94.191.137.122.mobile.tre.se) (Ping timeout: 272 seconds) |
| 06:11:49 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 06:12:10 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 06:13:04 | → | Obo joins (~roberto@122.red-83-38-248.dynamicip.rima-tde.net) |
| 06:14:21 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 252 seconds) |
| 06:14:57 | → | keutoi joins (~keutoi@157.48.222.234) |
| 06:16:20 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 06:17:18 | → | fef joins (~thedawn@user/thedawn) |
| 06:17:47 | × | hexreel quits (~hr@69.233.98.238) (Quit: WeeChat 3.2) |
| 06:18:12 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 252 seconds) |
| 06:19:40 | × | _________ quits (~nobody@user/noodly) (Ping timeout: 265 seconds) |
| 06:21:56 | × | arjun quits (~Srain@user/arjun) (Ping timeout: 252 seconds) |
| 06:22:40 | → | arjun joins (~Srain@user/arjun) |
| 06:23:36 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 06:30:10 | × | dextaa quits (~DV@aftr-37-201-214-197.unity-media.net) (Ping timeout: 246 seconds) |
| 06:30:23 | × | andreabedini quits (~andreabed@8s8kj6nms09jvtyb2xjc.ip6.superloop.com) (Quit: WeeChat 2.8) |
| 06:30:33 | → | _________ joins (~nobody@user/noodly) |
| 06:30:43 | → | dextaa joins (~DV@aftr-37-201-214-197.unity-media.net) |
| 06:31:29 | × | dminuoso quits (~dminuoso@user/dminuoso) (Quit: ZNC 1.7.5 - https://znc.in) |
| 06:31:47 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 06:35:53 | → | dminuoso joins (~dminuoso@static.88-198-218-68.clients.your-server.de) |
| 06:36:58 | → | eight joins (~eight@user/eight) |
| 06:37:00 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 272 seconds) |
| 06:37:56 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:39:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:41:18 | → | andreabedini joins (~andreabed@8s8kj6nms09jvtyb2xjc.ip6.superloop.com) |
| 06:41:40 | → | unyu joins (~pyon@user/pyon) |
| 06:41:40 | unyu | is now known as isekaijin |
| 06:42:24 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 258 seconds) |
| 06:46:46 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 06:48:53 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 06:48:53 | → | dunkeln_ joins (~dunkeln@188.70.10.207) |
| 06:50:49 | × | keutoi quits (~keutoi@157.48.222.234) (Remote host closed the connection) |
| 06:52:55 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
| 06:56:11 | × | a6a45081-2b83 quits (~aditya@106.214.66.197) (Remote host closed the connection) |
| 06:57:33 | → | fendor joins (~fendor@91.141.49.3.wireless.dyn.drei.com) |
| 06:58:15 | × | jneira_ quits (~jneira_@217.red-81-39-172.dynamicip.rima-tde.net) (Quit: Ping timeout (120 seconds)) |
| 07:03:01 | × | sagax quits (~sagax@213.138.71.146) (Excess Flood) |
| 07:03:11 | × | dunkeln_ quits (~dunkeln@188.70.10.207) (Ping timeout: 252 seconds) |
| 07:03:44 | → | dunkeln_ joins (~dunkeln@188.70.10.207) |
| 07:04:07 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 07:06:34 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 07:14:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 07:15:31 | → | chomwitt joins (~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) |
| 07:17:42 | × | andreabedini quits (~andreabed@8s8kj6nms09jvtyb2xjc.ip6.superloop.com) (Quit: WeeChat 2.8) |
| 07:19:43 | → | oxide joins (~lambda@user/oxide) |
| 07:20:46 | → | epolanski joins (uid312403@id-312403.brockwell.irccloud.com) |
| 07:21:46 | × | chomwitt quits (~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 240 seconds) |
| 07:22:32 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
| 07:28:10 | → | neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) |
| 07:29:38 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 07:29:55 | × | eggplant_ quits (~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) (Remote host closed the connection) |
| 07:30:10 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:32:09 | × | maf654321 quits (~maf654321@user/maf654321) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 07:33:27 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1) |
| 07:33:37 | → | cfricke joins (~cfricke@user/cfricke) |
| 07:34:22 | → | Pickchea joins (~private@185.31.55.18.dyn.kraftcom.at) |
| 07:35:41 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 258 seconds) |
| 07:36:47 | × | Pickchea quits (~private@185.31.55.18.dyn.kraftcom.at) (Changing host) |
| 07:36:47 | → | Pickchea joins (~private@user/pickchea) |
| 07:36:59 | → | nschoe joins (~quassel@178.251.84.79) |
| 07:37:00 | × | cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50) |
| 07:37:22 | × | bontaq quits (~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 07:40:32 | → | CoolerX joins (~CoolerX@user/coolerx) |
| 07:40:32 | <CoolerX> | Hi |
| 07:40:32 | <CoolerX> | Is there a way to embed Haskell in other languages? |
| 07:40:33 | <Axman6> | G'day |
| 07:40:34 | <CoolerX> | Would like to embed Haskell in a Golang project |
| 07:40:36 | <CoolerX> | Since Haskell is compiled I am not entirely sure if this is even possible |
| 07:40:36 | <Axman6> | Yo can cal Haskell from other languages that are able to call C functions |
| 07:40:37 | <Axman6> | You can call* |
| 07:40:44 | <CoolerX> | right |
| 07:40:51 | <CoolerX> | through the foreign function interface of C |
| 07:40:58 | × | _________ quits (~nobody@user/noodly) (Ping timeout: 272 seconds) |
| 07:41:17 | <CoolerX> | and C++, Golang |
| 07:42:42 | <CoolerX> | well ok, th |
| 07:42:42 | <CoolerX> | Thanks |
| 07:42:42 | × | CoolerX quits (~CoolerX@user/coolerx) (Client Quit) |
| 07:45:43 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 07:46:18 | → | lavaman joins (~lavaman@98.38.249.169) |
| 07:47:34 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.1) |
| 07:48:57 | × | azeem quits (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 252 seconds) |
| 07:49:22 | × | euandreh quits (~euandreh@2804:14c:33:9fe5:af84:7945:9a52:2fce) (Ping timeout: 240 seconds) |
| 07:49:25 | → | azeem joins (~azeem@176.200.224.11) |
| 07:50:36 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 07:50:45 | → | euandreh joins (~euandreh@2804:14c:33:9fe5:547e:4393:1b6c:3477) |
| 07:51:17 | → | _________ joins (~nobody@user/noodly) |
| 07:53:27 | × | MidAutumnMoon9 quits (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge) |
| 07:53:27 | → | MidAutumnMoon9 joins (~MidAutumn@user/midautumnmoon) |
| 07:55:48 | → | chele joins (~chele@user/chele) |
| 07:57:26 | × | synthmeat quits (~synthmeat@user/synthmeat) (Quit: WeeChat 3.2) |
| 07:58:55 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 08:00:55 | → | zyklotomic joins (~ethan@2604:a880:800:10::79f:8001) |
| 08:02:59 | → | sidv joins (~sidv@23.252.50.92) |
| 08:03:01 | <zyklotomic> | is foldl (+) 0 [1::Int .. 100] not susceptible to space leaks because GHC optimizes it? |
| 08:04:20 | × | Obo quits (~roberto@122.red-83-38-248.dynamicip.rima-tde.net) (Ping timeout: 240 seconds) |
| 08:04:23 | <merijn> | zyklotomic: yeah |
| 08:06:05 | <zyklotomic> | is it because of a special case of Int# being unlifted |
| 08:06:21 | → | Obo joins (~roberto@94.191.137.180.mobile.tre.se) |
| 08:06:28 | → | hendursaga joins (~weechat@user/hendursaga) |
| 08:07:03 | <zyklotomic> | and I was trying to force a leak lol |
| 08:08:25 | <merijn> | zyklotomic: GHC has a strictness analyzer that tries to detect cases like this where making a computation strict improves performance |
| 08:09:15 | × | hendursa1 quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
| 08:09:25 | <merijn> | zyklotomic: Hence the pedantic correction that Haskell is "non-strict" and not lazy |
| 08:09:27 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 08:09:27 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 08:09:49 | <zyklotomic> | shouldn't a warning be triggered in those cases, just wondering |
| 08:10:39 | <zyklotomic> | merijn: or GHC Haskell? i'm not sure how true that is |
| 08:11:04 | <merijn> | zyklotomic: The Haskell report specifies haskell as "non-strict" |
| 08:11:44 | <merijn> | zyklotomic: So making code strict is not an error as long as the semantics don't change compared to lazy eval |
| 08:13:46 | <zyklotomic> | GHC is defacto |
| 08:13:47 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-2789-7e8e-a3b3-3994.fixed6.kpn.net) |
| 08:13:47 | <zyklotomic> | ah gotcha |
| 08:13:48 | <zyklotomic> | merijn: can you give me an example of how to create a partial application leak on purpose |
| 08:13:48 | <zyklotomic> | like what I was trying to do with the fold |
| 08:13:48 | <zyklotomic> | not partial application i think, that might be wrong way to describe it |
| 08:13:48 | <zyklotomic> | but unevaluated thunks |
| 08:13:48 | → | synthmeat joins (~synthmeat@user/synthmeat) |
| 08:14:26 | <merijn> | zyklotomic: The reason to specify Haskell as "non-strict" is exactly to make it legal for compilers to generate strict code |
| 08:15:10 | × | sshine quits (~simon@hubris.eta.solutions) (Ping timeout: 272 seconds) |
| 08:16:51 | → | janiczek joins (~janiczek@89-24-215-117.customers.tmcz.cz) |
| 08:17:18 | <janiczek> | @pl \x -> f x 2 |
| 08:17:18 | <lambdabot> | flip f 2 |
| 08:17:36 | → | sshine joins (~simon@hubris.eta.solutions) |
| 08:17:36 | × | allbery_b quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 08:17:36 | → | viluon joins (uid453725@id-453725.brockwell.irccloud.com) |
| 08:19:02 | <zyklotomic> | merijn: and -O0 should turn that off right |
| 08:19:02 | <zyklotomic> | i'm reading https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/using-optimisation.html |
| 08:19:03 | <zyklotomic> | trying to force thunks to happen |
| 08:19:03 | <zyklotomic> | *turn off the strictness analyzer |
| 08:19:09 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 08:19:40 | → | leah2 joins (~leah@vuxu.org) |
| 08:21:48 | × | janiczek quits (~janiczek@89-24-215-117.customers.tmcz.cz) (Quit: WeeChat 3.2) |
| 08:24:55 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-2789-7e8e-a3b3-3994.fixed6.kpn.net) (Remote host closed the connection) |
| 08:25:00 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-a11c-6737-273e-abfe.fixed6.kpn.net) |
| 08:25:22 | → | michalz joins (~michalz@185.246.204.121) |
| 08:25:22 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds) |
| 08:25:22 | × | Obo quits (~roberto@94.191.137.180.mobile.tre.se) (Ping timeout: 265 seconds) |
| 08:25:22 | <sidv> | I'm trying to do precise time calculations down to the millisecond, does UTCTime from the time package support this level of precision? |
| 08:25:22 | × | arjun quits (~Srain@user/arjun) (Ping timeout: 246 seconds) |
| 08:25:23 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 08:25:39 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 08:25:39 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 08:25:51 | <merijn> | Depends on your machine? :p |
| 08:26:00 | <merijn> | What sorta precise time calculations? |
| 08:26:05 | <merijn> | Like benchmark timings? |
| 08:26:45 | × | azeem quits (~azeem@176.200.224.11) (Read error: Connection reset by peer) |
| 08:26:46 | <sidv> | I'm dealing with APIs that give timestamps in milliseconds |
| 08:26:48 | → | Obo joins (~roberto@122.red-83-38-248.dynamicip.rima-tde.net) |
| 08:27:01 | <sidv> | I'm trying to write a scraper for time series data |
| 08:27:13 | → | azeem joins (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) |
| 08:27:57 | <sidv> | Is it better to keep things as UTCTime or just store the timestamp as an Int64 or something |
| 08:28:04 | <merijn> | sidv: https://hackage.haskell.org/package/time-1.12/docs/Data-Time-Clock.html#t:DiffTime |
| 08:28:11 | <merijn> | sidv: Docs says it has picosecond resolution |
| 08:28:39 | <merijn> | Since UTCTime is just a Day and a DiffTime |
| 08:30:26 | × | zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection) |
| 08:30:43 | <sidv> | oh that's perfect |
| 08:30:43 | <sidv> | thanks merijn |
| 08:30:43 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) |
| 08:30:43 | × | MidAutumnMoon9 quits (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge) |
| 08:31:38 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 272 seconds) |
| 08:32:39 | <viluon> | hi, is there a GHC.Generics -based alternative to SYB? I'm looking for something with similarly high-level traversals/schemes which would generalise type-specific cases to type-agnostic ones, but with the additional structure of a sum-of-products representation |
| 08:35:40 | × | polux quits (~polux@51.15.169.172) (Quit: The Lounge - https://thelounge.github.io) |
| 08:35:44 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) (Ping timeout: 252 seconds) |
| 08:35:45 | → | polux joins (~polux@51.15.169.172) |
| 08:36:51 | → | MidAutumnMoon9 joins (~MidAutumn@user/midautumnmoon) |
| 08:39:31 | → | hmmmas joins (~chenqisu1@183.217.200.144) |
| 08:40:42 | × | Arahael quits (~arahael@60-240-135-223.tpgi.com.au) (Ping timeout: 256 seconds) |
| 08:47:22 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 258 seconds) |
| 08:50:47 | → | zaquest joins (~notzaques@5.128.210.178) |
| 08:50:48 | → | arahael joins (~arahael@118.211.182.212) |
| 08:50:48 | → | chomwitt joins (~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) |
| 08:50:48 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 08:50:49 | → | arjun joins (~Srain@user/arjun) |
| 08:50:49 | → | dunj3 joins (~dunj3@2001:16b8:3066:7300:d4d1:5d56:be5f:cf84) |
| 08:55:21 | × | m4lvin quits (~m4lvin@w4eg.de) (Quit: m4lvin) |
| 08:56:51 | <dminuoso> | viluon: You mean like generics-sop? |
| 08:57:10 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 246 seconds) |
| 08:57:12 | → | MoC joins (~moc@user/moc) |
| 08:58:01 | <dminuoso> | (or sop-core, I guess) |
| 08:58:31 | <dminuoso> | Well. Both together. :) |
| 09:01:25 | → | mpt joins (~tom@2a02:908:1862:49e0::8) |
| 09:01:53 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 09:02:34 | → | zeenk joins (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) |
| 09:06:16 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 246 seconds) |
| 09:06:38 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 09:10:03 | → | Pickchea joins (~private@user/pickchea) |
| 09:11:10 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 246 seconds) |
| 09:17:23 | × | arjun quits (~Srain@user/arjun) (Ping timeout: 252 seconds) |
| 09:20:41 | × | APic quits (apic@apic.name) (Ping timeout: 252 seconds) |
| 09:23:46 | × | mpt quits (~tom@2a02:908:1862:49e0::8) (Ping timeout: 246 seconds) |
| 09:24:12 | → | Guest29 joins (~Guest29@2a02:a03f:8dbe:300:f1f1:39aa:3c9b:ab9c) |
| 09:25:50 | × | jneira quits (~jneira@212.8.115.226) (Quit: Client closed) |
| 09:26:25 | → | jneira joins (~jneira@212.8.115.226) |
| 09:26:32 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 09:26:49 | × | sidv quits (~sidv@23.252.50.92) (Ping timeout: 246 seconds) |
| 09:29:17 | <viluon> | dminuoso: oh, generics-sop has that kind of functionality? is there a variant of the paradise benchmark implemented with it? |
| 09:30:16 | <Profpatsch> | viluon: what’s the paradise benchmark? |
| 09:31:09 | <Profpatsch> | I can only find heaven benchmark |
| 09:31:30 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 09:31:38 | <viluon> | Profpatsch: it's an old but at the time seemingly popular exercise in generic programming, see e.g. http://web.archive.org/web/20080622204226/http://www.cs.vu.nl/boilerplate/#paradise |
| 09:33:41 | <Profpatsch> | Oh god, one letter constructor names, this must be the same people that made SYB |
| 09:35:19 | <Profpatsch> | I would like a second helping of one letter names that don’t correspond to any mnemonics please |
| 09:35:50 | → | ubert joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) |
| 09:35:55 | <Profpatsch> | Also how is it paradise if there’s XML and +1 Company employee salaries in the example |
| 09:35:59 | <int-e> | Why do you call it SYB instead of Scrap Your Boilerplate ;-) |
| 09:36:45 | <Profpatsch> | Cause bad naming means your framework’s name is so long and unwieldy that you have to resort to bad abbreviations |
| 09:36:58 | × | chomwitt quits (~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 240 seconds) |
| 09:37:12 | <Profpatsch> | sorry being snarky, but the main problem with Generics is not that they are not powerful, but their awful naming. |
| 09:37:26 | → | ubert1 joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) |
| 09:37:50 | <int-e> | Heh, you don't need to apologize for being snarky in reply to a snark. |
| 09:37:51 | <Profpatsch> | I haven’t looked at generics-sop yet, I hope it doesn’t fall into the same trap |
| 09:38:00 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 252 seconds) |
| 09:38:18 | <absence> | in ghc 9, template haskell was changed so liftTyped returns Quote m => Code m a instead of Q (TExp a). this breaks the code "either fail liftTyped something" because Code doesn't have a MonadFail instance. what's the recommended way to deal with this? manually wrap the result of fail in Code, i.e. "either (Code . fail) liftTyped something", or does that have other consequences? |
| 09:39:53 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 09:40:14 | → | lavaman joins (~lavaman@98.38.249.169) |
| 09:40:41 | <int-e> | > let b = 1; 𝐛 = 2; 𝑏 = 3; 𝒃 = 4; 𝒷 = 5; 𝓫 = 6; 𝔟 = 7; 𝕓 = 8; 𝖇 = 9; 𝘣 = 10; 𝙗 = 11; 𝚋 = 12 in b+𝐛+𝑏+𝒃+𝒷+𝓫+𝔟+𝕓+𝖇+𝘣+𝙗+𝚋 |
| 09:40:43 | <lambdabot> | 78 |
| 09:40:45 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:41:22 | → | Pickchea joins (~private@user/pickchea) |
| 09:41:30 | <dminuoso> | int-e: Is this Agda code? |
| 09:41:32 | <dminuoso> | :> |
| 09:41:43 | <int-e> | dminuoso: lambdabot doesn't do Agda |
| 09:41:56 | <int-e> | But, heh. |
| 09:43:09 | × | hmmmas quits (~chenqisu1@183.217.200.144) (Quit: Leaving.) |
| 09:45:06 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds) |
| 09:46:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 09:46:39 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:47:11 | → | kayprish joins (~kayprish@46.240.143.86) |
| 09:47:49 | × | Guest29 quits (~Guest29@2a02:a03f:8dbe:300:f1f1:39aa:3c9b:ab9c) (Ping timeout: 246 seconds) |
| 09:49:43 | → | Guest29 joins (~Guest29@2a02:a03f:8dbe:300:c46e:da5f:3e3c:1d44) |
| 09:51:27 | <Guest29> | Does RIO provide a way to set environment variables? RIO.Process.envVarsL only allows getting values |
| 09:52:09 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 09:52:42 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 272 seconds) |
| 09:52:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:54:26 | <Taneb> | Guest29: it's not possible to set environment variables like that, with or without RIO |
| 09:57:52 | × | fef quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 09:58:04 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-a11c-6737-273e-abfe.fixed6.kpn.net) (Ping timeout: 246 seconds) |
| 09:58:17 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 09:58:33 | → | fef joins (~thedawn@user/thedawn) |
| 09:59:12 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:59:32 | <Guest29> | oh ok. thx |
| 10:00:23 | × | Obo quits (~roberto@122.red-83-38-248.dynamicip.rima-tde.net) (Ping timeout: 268 seconds) |
| 10:02:02 | × | myShoggoth quits (~myShoggot@75.164.51.64) (Read error: Connection reset by peer) |
| 10:02:02 | → | Obo joins (~roberto@94.191.137.180.mobile.tre.se) |
| 10:04:48 | × | azeem quits (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 10:04:54 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 10:05:12 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:07:06 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 10:10:42 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 10:11:12 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:11:50 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 252 seconds) |
| 10:13:46 | × | darklambda quits (~whateverg@111.65.56.40) (Quit: leaving) |
| 10:15:09 | → | solaire joins (~solaire@pool-108-31-85-19.washdc.fios.verizon.net) |
| 10:16:20 | × | solaire quits (~solaire@pool-108-31-85-19.washdc.fios.verizon.net) (Client Quit) |
| 10:16:46 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 10:16:48 | → | darklambda joins (~whateverg@111.65.56.40) |
| 10:17:12 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:18:22 | → | lavaman joins (~lavaman@98.38.249.169) |
| 10:19:28 | × | Guest29 quits (~Guest29@2a02:a03f:8dbe:300:c46e:da5f:3e3c:1d44) (Quit: Client closed) |
| 10:20:43 | → | azeem joins (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) |
| 10:22:09 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 10:22:17 | → | Atum_ joins (~IRC@user/atum/x-2392232) |
| 10:22:34 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 10:23:43 | → | AgentM joins (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) |
| 10:24:17 | <boxscape> | > "b+𝐛+𝑏+𝒃+𝒷+𝓫+𝔟+𝕓+𝖇+𝘣+𝙗+𝚋" |
| 10:24:19 | <lambdabot> | "b+\119835+\119887+\119939+\119991+\120043+\120095+\120147+\120199+\120355+\... |
| 10:25:51 | → | zcombinator joins (~zcombinat@5.180.62.223) |
| 10:26:33 | <kuribas> | wouldn't it be nice if you could write TH like mustache templates? |
| 10:27:32 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 10:27:44 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 10:27:50 | <kuribas> | or something else textual |
| 10:28:07 | → | Pickchea joins (~private@user/pickchea) |
| 10:29:12 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:29:55 | <Rembane> | Sounds intriguing, can it be done as a hack using the preprocessor? |
| 10:30:31 | <Rembane> | ...just to get a feel for it |
| 10:32:36 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 272 seconds) |
| 10:33:39 | <boxscape> | if <*> is "ap", how do you pronounce <**>? |
| 10:34:23 | <boxscape> | I was thinking maybe "flap", portmanteau of flip and ap |
| 10:34:34 | <boxscape> | but I don't know if there's a semi-established name |
| 10:34:47 | <Atum_> | stack compilation on windows is super slow, wow |
| 10:35:09 | <Atum_> | installed wsl, and now it is like, 10x faster |
| 10:35:13 | <boxscape> | compiling stack or compiling a program with stack? |
| 10:35:23 | <Atum_> | compiling a program with stack |
| 10:35:25 | <Atum_> | using the default template |
| 10:35:28 | <boxscape> | I see, weird |
| 10:37:15 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Quit: mikoto-chan) |
| 10:37:30 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 10:39:34 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 10:40:49 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:42:33 | × | zcombinator quits (~zcombinat@5.180.62.223) (Quit: WeeChat 3.2) |
| 10:46:32 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 10:46:46 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:47:19 | → | zcombinator joins (~zcombinat@host-87-7-58-35.retail.telecomitalia.it) |
| 10:48:28 | → | chomwitt joins (~Pitsikoko@athedsl-16082.home.otenet.gr) |
| 10:49:54 | × | kayprish quits (~kayprish@46.240.143.86) (Ping timeout: 252 seconds) |
| 10:51:57 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 10:52:42 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:58:05 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 10:58:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:59:55 | × | Kaipi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection) |
| 11:00:25 | → | Kaipi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 11:03:49 | × | kenran quits (~kenran@200116b82bdcfa0070f86b22d449a64a.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
| 11:04:13 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 11:04:36 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:05:18 | <dminuoso> | kuribas: Nothing keeps you from using mustache on haskell files! :D |
| 11:08:03 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 11:09:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 11:10:33 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:10:54 | × | zcombinator quits (~zcombinat@host-87-7-58-35.retail.telecomitalia.it) (Quit: WeeChat 3.2) |
| 11:11:02 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 11:11:55 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 11:13:36 | → | Kirat joins (~Gill@157.39.157.217) |
| 11:13:49 | × | Kirat quits (~Gill@157.39.157.217) (Client Quit) |
| 11:15:46 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 11:16:48 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:19:07 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 11:25:08 | × | chomwitt quits (~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 265 seconds) |
| 11:26:34 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 240 seconds) |
| 11:28:06 | → | chris-the-slurpa joins (~chris@81.96.113.213) |
| 11:35:21 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 268 seconds) |
| 11:40:25 | <viluon> | dminuoso: sorry to ping you again, would you happen to know about places I could learn generics-sop by example? |
| 11:40:28 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
| 11:41:29 | × | chris-the-slurpa quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 11:42:00 | → | chris-the-slurpa joins (~chris@81.96.113.213) |
| 11:43:33 | → | chris-th_ joins (~chris@81.96.113.213) |
| 11:43:33 | × | chris-the-slurpa quits (~chris@81.96.113.213) (Read error: Connection reset by peer) |
| 11:44:00 | × | sander quits (~sander@user/sander) (Quit: So long! :)) |
| 11:44:12 | → | sander joins (~sander@user/sander) |
| 11:44:36 | × | Obo quits (~roberto@94.191.137.180.mobile.tre.se) (Read error: Connection reset by peer) |
| 11:47:39 | × | dunkeln_ quits (~dunkeln@188.70.10.207) (Ping timeout: 252 seconds) |
| 11:50:06 | → | favonia joins (~favonia@user/favonia) |
| 11:50:21 | → | Obo joins (~roberto@122.red-83-38-248.dynamicip.rima-tde.net) |
| 11:57:59 | × | Obo quits (~roberto@122.red-83-38-248.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
| 12:00:24 | → | chomwitt joins (~Pitsikoko@athedsl-16082.home.otenet.gr) |
| 12:00:26 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 12:03:00 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-bdc4-1e8f-afa7-3bad.fixed6.kpn.net) |
| 12:03:04 | → | zcombinator joins (~zcombinat@host-87-7-58-35.retail.telecomitalia.it) |
| 12:03:38 | × | MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 258 seconds) |
| 12:05:53 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 12:06:26 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 12:06:40 | × | isekaijin quits (~pyon@user/pyon) (Quit: WeeChat 3.2) |
| 12:08:00 | × | chomwitt quits (~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 252 seconds) |
| 12:10:34 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 12:12:24 | <lechner> | Hi, how can I run these two IO statements inside the ZMQ monad, please? https://dpaste.org/cPWe#L47,48 |
| 12:13:01 | <merijn> | liftIO, probably |
| 12:13:28 | → | Guest2492 joins (~Martin@cpe-188-129-56-84.dynamic.amis.hr) |
| 12:13:38 | <lechner> | i know, but do i use point-free style? |
| 12:15:37 | → | lortabac joins (~lortabac@95.138.56.124) |
| 12:16:47 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.0.1) |
| 12:16:51 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 12:19:31 | × | Guest2492 quits (~Martin@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection) |
| 12:19:59 | → | Pickchea joins (~private@user/pickchea) |
| 12:20:18 | → | hiruji joins (~hiruji@user/hiruji) |
| 12:20:29 | → | APic joins (apic@apic.name) |
| 12:22:25 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 258 seconds) |
| 12:22:59 | → | hatz_ joins (~user@2a05:f480:1400:f44:5400:3ff:fe6d:f349) |
| 12:23:29 | <bryan[m]> | It's not required, no. Are you asking how to combine the two statements? You don't need to do so, although it's possible |
| 12:23:46 | <bryan[m]> | I assume you're talking about the two commented lines |
| 12:23:50 | → | Martinsos joins (~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) |
| 12:24:08 | <lechner> | i'd prefer not to, because it would teach me something about variables too |
| 12:24:15 | <lechner> | yes |
| 12:24:28 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 12:26:03 | toms | is now known as cow-orker |
| 12:26:03 | <exarkun> | What is telling me `Setup: The pkg-config package 'libchallenge_bypass_ristretto_ffi' is required but it could not be found.` and what does it mean I'm missing? |
| 12:26:11 | <bryan[m]> | Then yeah, you need to add liftIO to both lines in the right place |
| 12:26:19 | cow-orker | is now known as toms |
| 12:26:25 | → | acidjnk joins (~acidjnk@p200300d0c72b9563c9e402731a025c7c.dip0.t-ipconnect.de) |
| 12:27:01 | × | SoF quits (~skius@user/skius) (Quit: Ping timeout (120 seconds)) |
| 12:27:19 | → | SoF joins (~skius@user/skius) |
| 12:27:56 | <bryan[m]> | exarkun: the cabal package must list pkg-config dependencies (pkg-config is a cross-distribution tool used to find system libraries). Your system is presumably missing that system package |
| 12:28:41 | <bryan[m]> | So it's cabal that's telling you the message |
| 12:28:42 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 240 seconds) |
| 12:30:42 | × | acidjnk quits (~acidjnk@p200300d0c72b9563c9e402731a025c7c.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 12:30:47 | <exarkun> | Okay. I have `pkgconfig-depends: libchallenge_bypass_ristretto_ffi` in my .cabal file. So cabal is now asking `pkg-config` some question about `libchallenge_bypass_ristretto_ffi`? Like maybe `pkg-config --exists libchallenge_bypass_ristretto_ffi` or some such? And `pkg-config` doesn't know anything about it it... |
| 12:32:19 | <exarkun> | Does this also come from Cabal? "error: The pkg-conf packages does not contain the package: libchallenge_bypass_ristretto_ffi (pkg-conf dependency)." |
| 12:33:25 | <merijn> | exarkun: It means cabal asked pkg-config about it, but your pkg-config install didn't know about it |
| 12:34:19 | <exarkun> | merijn: The first one or the second one? |
| 12:35:11 | <merijn> | For sure the first one is that, the 2nd probably too? |
| 12:35:27 | <merijn> | exarkun: I think the 2nd one is just cabal forwarding the output of pkg-config? |
| 12:39:39 | <lechner> | Hi, why does the last line here give "Couldn't match type ‘[]’ with ‘ZMQ z’ Expected type: ZMQ z Char Actual type: String please, while the assignment in the line above it worked just fine? https://dpaste.org/DzEH#L31 |
| 12:40:06 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Read error: Connection reset by peer) |
| 12:40:43 | → | nsilv joins (~nsilv@212.103.198.210) |
| 12:43:10 | <mniip> | what does "constraint from maximum version of Cabal used by Setup.hs requires <3.4" |
| 12:43:12 | <mniip> | mean |
| 12:43:38 | <mniip> | I don't see such constraint anywhere in the cabal file |
| 12:45:28 | <exarkun> | I suspect that the `pkg-conf` error comes from something else... haskell.nix, I guess. It appears when I remove the nixpkgs overlay that defines libchallenge_bypass_ristretto_ffi. |
| 12:46:33 | <merijn> | mniip: You have a custom Setup.hs? |
| 12:46:38 | <mniip> | yes |
| 12:46:46 | <merijn> | mniip: Do you have setup-depends? |
| 12:46:49 | <mniip> | yes |
| 12:47:02 | <mniip> | really I'm trying to install ghc-paths into GHC HEAD inplace package db |
| 12:47:04 | <merijn> | hmm |
| 12:47:41 | <merijn> | Which Cabal version do you have installed? |
| 12:47:51 | <merijn> | Is it maybe using one too old for your GHC? |
| 12:48:13 | <mniip> | cabal-install ver 3.2.0.0 |
| 12:48:28 | <merijn> | Pretty sure that doesn't work with GHC HEAD |
| 12:48:30 | <mniip> | oh |
| 12:48:39 | <merijn> | Doesn't 9.0 or 9.2 require 3.4? |
| 12:48:43 | × | AgentM quits (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.) |
| 12:48:50 | <merijn> | So presumably HEAD requires something newer too |
| 12:48:51 | <mniip> | does 3.4 |
| 12:49:04 | <mniip> | let's try that |
| 12:49:26 | <merijn> | Cabal doesn't guarantee forward compat, only backwards |
| 12:49:40 | <mniip> | understandable |
| 12:49:59 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 12:50:52 | → | andreabedini joins (~andreabed@8s8kj6nl13s474s8p7bh.ip6.superloop.com) |
| 12:51:10 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 265 seconds) |
| 12:51:47 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 12:51:50 | → | scrazen joins (~scrazen@user/scrazen) |
| 12:53:15 | → | wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
| 12:56:04 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 12:56:08 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 12:57:00 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 272 seconds) |
| 13:01:11 | → | alx741 joins (~alx741@181.196.69.147) |
| 13:02:07 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 13:02:48 | <bryan[m]> | lechner: `<-` means to unwrap a monadic value, but your last line doesn't have one. (Well, technically it does, but it's the wrong kind of monad. Pretend I didn't just tell you that.) If you want to create a new name for a non-monadic value inside of a do-block, use let. `let configPath = head args` |
| 13:03:23 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
| 13:03:40 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 13:04:34 | × | chris-th_ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 13:05:16 | → | chris-the-slurpa joins (~chris@81.96.113.213) |
| 13:08:14 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 13:08:23 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 13:09:17 | × | jneira quits (~jneira@212.8.115.226) (Quit: Client closed) |
| 13:09:29 | × | chris-the-slurpa quits (~chris@81.96.113.213) (Ping timeout: 252 seconds) |
| 13:11:57 | <merijn> | mniip: Did that resolve things? |
| 13:12:05 | <mniip> | compiling :P |
| 13:12:15 | <merijn> | That's further than it got before, no? :p |
| 13:12:23 | <mniip> | compiling cabal-install |
| 13:12:26 | <merijn> | ah |
| 13:12:40 | <lechner> | bryan[m]: thanks! |
| 13:18:55 | <mniip> | it worked in the end |
| 13:22:51 | <merijn> | mniip: \o/ |
| 13:29:37 | <viluon> | hi, I'm trying to understand generics-sop, going through the pretty-sop example (https://github.com/well-typed/pretty-sop/blob/master/src/Generics/SOP/PrettyVal.hs#L33). It looks like gprettyVal' requires the `All SListI xss` constraint (equivalent to `SListI2 xss`, right?) which from what I can tell ensures that the code of the datatype (represented by the `xss` parameter) has to have exactly one field in every product. |
| 13:29:38 | <viluon> | That's obviously not true, as the README example shows (and also such a constraint doesn't follow from those of `gprettyVal`, `gprettyVal'`'s caller). Where am I going wrong? |
| 13:31:19 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 13:32:12 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:37:06 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Remote host closed the connection) |
| 13:37:18 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 13:38:08 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 13:43:37 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 268 seconds) |
| 13:44:42 | × | Martinsos quits (~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection) |
| 13:45:38 | → | ray joins (~ray@user/re) |
| 13:47:48 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 13:47:55 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Remote host closed the connection) |
| 13:49:17 | → | chris-the-slurpa joins (~chris@81.96.113.213) |
| 13:50:07 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 13:51:17 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 13:51:20 | → | Pickchea joins (~private@user/pickchea) |
| 13:53:02 | → | dunkeln joins (~dunkeln@94.129.65.28) |
| 13:58:09 | → | Kirat joins (~Gill@157.39.129.34) |
| 13:58:21 | × | Kirat quits (~Gill@157.39.129.34) (Client Quit) |
| 14:00:16 | → | argento joins (~argent0@168-227-97-29.ptr.westnet.com.ar) |
| 14:03:10 | → | chomwitt joins (~Pitsikoko@athedsl-16082.home.otenet.gr) |
| 14:08:34 | × | xff0x quits (~xff0x@2001:1a81:53dc:b800:8c77:48f3:1e3:3060) (Ping timeout: 240 seconds) |
| 14:09:18 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:09:32 | ← | zyklotomic parts (~ethan@2604:a880:800:10::79f:8001) (WeeChat 2.8) |
| 14:10:12 | → | hexreel joins (~hr@69.233.98.238) |
| 14:11:19 | × | shredder quits (~user@user/shredder) (Quit: quitting) |
| 14:13:09 | → | shredder joins (~user@user/shredder) |
| 14:13:21 | → | xff0x joins (~xff0x@2001:1a81:53dc:b800:8c77:48f3:1e3:3060) |
| 14:13:24 | × | dunkeln quits (~dunkeln@94.129.65.28) (Quit: leaving) |
| 14:18:43 | → | Obo joins (~roberto@122.red-83-38-248.dynamicip.rima-tde.net) |
| 14:27:22 | × | wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal) |
| 14:27:57 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 14:29:15 | × | nsilv quits (~nsilv@212.103.198.210) (Ping timeout: 268 seconds) |
| 14:30:16 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 14:31:00 | → | nsilv joins (~nsilv@212.103.198.210) |
| 14:32:57 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 268 seconds) |
| 14:34:15 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 14:35:11 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) |
| 14:39:22 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) (Ping timeout: 240 seconds) |
| 14:40:52 | → | chase joins (~chase@89.45.224.218) |
| 14:41:01 | × | chase quits (~chase@89.45.224.218) (Client Quit) |
| 14:42:08 | × | ubert1 quits (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 14:48:28 | × | euandreh quits (~euandreh@2804:14c:33:9fe5:547e:4393:1b6c:3477) (Ping timeout: 256 seconds) |
| 14:49:18 | → | derelict joins (~derelict@user/derelict) |
| 14:49:21 | → | euandreh joins (~euandreh@2804:14c:33:9fe5:3720:61ec:ee32:2ddc) |
| 14:51:19 | → | MrVulcan joins (~MrVulcan@101.175.88.138) |
| 14:51:50 | × | andreabedini quits (~andreabed@8s8kj6nl13s474s8p7bh.ip6.superloop.com) (Quit: WeeChat 3.2) |
| 14:56:34 | × | michalz quits (~michalz@185.246.204.121) (Remote host closed the connection) |
| 14:57:27 | × | hatz_ quits (~user@2a05:f480:1400:f44:5400:3ff:fe6d:f349) (Quit: hatz_) |
| 14:57:51 | <lechner> | Hi, if 'a $ b c' is the same as 'a (b c)' why, please, does this give an error bind responder ("tcp://*:" ++ show $ port config) while this does not bind responder ("tcp://*:" ++ show (port config)) |
| 14:59:46 | → | dut joins (~dut@user/dut) |
| 15:01:21 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 15:01:36 | <geekosaur> | because `a $ b c` is only half the story |
| 15:01:51 | <geekosaur> | a b $ c d is the same as (a b) (c d) |
| 15:02:18 | <geekosaur> | so yoiu're trying to append the function `show` to a string |
| 15:02:31 | <lechner> | ah |
| 15:02:38 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds) |
| 15:02:40 | × | dut quits (~dut@user/dut) (Client Quit) |
| 15:03:04 | <lechner> | so (show $ port config) is perhaps a better way to write that |
| 15:03:19 | <geekosaur> | yes |
| 15:03:52 | → | hatz_ joins (~user@2a05:f480:1400:f44:5400:3ff:fe6d:f349) |
| 15:04:02 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 15:05:06 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) |
| 15:05:22 | × | ray quits (~ray@user/re) (Quit: WeeChat 3.2) |
| 15:05:42 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:06:02 | → | ray joins (~ray@user/re) |
| 15:09:46 | × | azeem quits (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 240 seconds) |
| 15:11:25 | × | MoC quits (~moc@user/moc) (Quit: Konversation terminated!) |
| 15:12:44 | → | azeem joins (~azeem@176.200.191.45) |
| 15:12:54 | niko | is now known as o |
| 15:13:14 | × | MrVulcan quits (~MrVulcan@101.175.88.138) (Ping timeout: 252 seconds) |
| 15:14:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 15:15:19 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 15:16:19 | × | neurocyte40 quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat) |
| 15:17:47 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 15:18:17 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 15:18:45 | × | Obo quits (~roberto@122.red-83-38-248.dynamicip.rima-tde.net) (Quit: WeeChat 2.8) |
| 15:19:06 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 240 seconds) |
| 15:19:24 | × | azeem quits (~azeem@176.200.191.45) (Ping timeout: 252 seconds) |
| 15:20:52 | → | azeem joins (~azeem@176.201.8.194) |
| 15:20:54 | → | Obo joins (~roberto@122.red-83-38-248.dynamicip.rima-tde.net) |
| 15:22:07 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 15:23:14 | → | neurocyte40 joins (~neurocyte@45.93.108.182) |
| 15:23:14 | × | neurocyte40 quits (~neurocyte@45.93.108.182) (Changing host) |
| 15:23:14 | → | neurocyte40 joins (~neurocyte@user/neurocyte) |
| 15:23:28 | <monochrom> | ("tcp://*:" ++ show (port config)) |
| 15:24:03 | <monochrom> | Since the cause of "I hate parentheses" is lost anyway, why keep $ around? |
| 15:24:14 | → | rostero joins (uid236576@id-236576.tooting.irccloud.com) |
| 15:25:17 | <lechner> | the other set or parentheses corresponds to %s in the formatting string |
| 15:25:49 | <lechner> | that could help when there are more than one |
| 15:26:16 | <monochrom> | But there is no %s. |
| 15:26:33 | × | lortabac quits (~lortabac@95.138.56.124) (Quit: WeeChat 2.8) |
| 15:26:38 | <monochrom> | printf "%s" (show whatever) I would agree. |
| 15:27:06 | <monochrom> | You have an infix operator ++ instead. |
| 15:27:18 | <lechner> | you are right! i was thinking two lines down in my code |
| 15:28:38 | <lechner> | i am starting to like this haskelling |
| 15:30:11 | × | spruit11_ quits (~quassel@86-82-44-193.fixed.kpn.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 15:30:37 | → | spruit11 joins (~quassel@2a02:a467:ccd6:1:f403:cf1e:97b5:1c9b) |
| 15:32:14 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 15:35:38 | × | azeem quits (~azeem@176.201.8.194) (Read error: Connection reset by peer) |
| 15:36:30 | <wroathe> | What would you call a function that does something like [a -> b] -> a -> b |
| 15:36:51 | <wroathe> | well, actually it's [a -> ()] -> a -> () |
| 15:37:01 | → | azeem joins (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) |
| 15:37:15 | <wroathe> | Just takes a list of functions and calls them in sequence by applying a to each and ignoring the result |
| 15:38:11 | <monochrom> | head |
| 15:39:39 | <monochrom> | const () (map ($ your_a) your_list) |
| 15:39:59 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 15:40:40 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Remote host closed the connection) |
| 15:40:45 | → | MQ-17J joins (~MQ-17J@8.21.10.15) |
| 15:41:05 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 15:43:09 | <dsal> | :t map (const ()) |
| 15:43:10 | <lambdabot> | error: |
| 15:43:10 | <lambdabot> | Ambiguous occurrence ‘map’ |
| 15:43:10 | <lambdabot> | It could refer to |
| 15:43:27 | <monochrom> | That's strange. |
| 15:43:30 | <monochrom> | @undefine |
| 15:43:31 | <lambdabot> | Undefined. |
| 15:43:36 | <monochrom> | :t map |
| 15:43:37 | <lambdabot> | (a -> b) -> [a] -> [b] |
| 15:43:40 | <monochrom> | better |
| 15:44:16 | <dsal> | :t (const.const) () |
| 15:44:17 | <lambdabot> | b1 -> b2 -> () |
| 15:44:23 | <wroathe> | monochrom: Why head? |
| 15:44:24 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 15:44:39 | <monochrom> | [t] -> t with t = a->b |
| 15:44:49 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 258 seconds) |
| 15:45:02 | → | fluffyballoon joins (~fluffybal@199.204.58.62) |
| 15:45:21 | <dsal> | wroathe: if you don't want the results of a function, bit calling it is the restaurant l easiest way to avoid it |
| 15:45:40 | <dsal> | Phone language... |
| 15:45:50 | <dsal> | Just don't call the function. |
| 15:46:01 | <wroathe> | Ah. The scenario is that I'm actually doing this in Javascript, and I was using function composition but the object each routine is operating on is a reference type, and so for the sake of sanity I'm not going to require the user to return the object that's being operated on, and instead this routine is just going to call each function in a sequence with the object |
| 15:46:35 | <dsal> | :t traverse_ |
| 15:46:36 | <monochrom> | Translate our mapM_ to javascript. |
| 15:46:36 | <lambdabot> | (Foldable t, Applicative f) => (a -> f b) -> t a -> f () |
| 15:46:58 | <wroathe> | Ah. That's exactly what I was looking for. |
| 15:47:00 | <wroathe> | Thanks. |
| 15:47:22 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 246 seconds) |
| 15:47:44 | <monochrom> | X -> IO Y vs X -> Y |
| 15:48:03 | <wroathe> | monochrom: Yeah, that makes way more sense. |
| 15:48:48 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 15:48:52 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2) |
| 16:03:05 | × | Obo quits (~roberto@122.red-83-38-248.dynamicip.rima-tde.net) (Quit: WeeChat 2.8) |
| 16:11:06 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-bdc4-1e8f-afa7-3bad.fixed6.kpn.net) (Ping timeout: 252 seconds) |
| 16:11:36 | × | smarton quits (~smarton@121407.xyz) (Changing host) |
| 16:11:36 | → | smarton joins (~smarton@gnu/webmaster/smarton) |
| 16:12:11 | × | nsilv quits (~nsilv@212.103.198.210) (Quit: WeeChat 3.0.1) |
| 16:13:30 | <Las[m]> | Does anyone here know how I'd parse only the first YAML document in a string? I'm trying to parse the YAML metadata blocks used with pandoc, but I'm assuming there's some clever way of doing it without me having to search for the `...` and stripping away everything after that. |
| 16:13:57 | <Las[m]> | Both HsYAML and yaml just give me an error just after the `...`, which is where the Markdown starts of course |
| 16:16:34 | × | alphabeta quits (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Ping timeout: 240 seconds) |
| 16:18:05 | → | xerxes joins (~xerxes@117.222.64.149) |
| 16:18:16 | <sm[m]> | parseYaml $ unlines $ takeWhile (/= "..." $ lines s ? |
| 16:19:38 | <sm[m]> | * parseYaml $ unlines $ takeWhile (/= "...") $ lines s ? |
| 16:20:13 | <kosmikus> | viluon: is your question about generics-sop still open? I'm not sure if I understand your comment correctly. the constraint `All SListI xss` does not say very much. In principle, all that it states is that all elements of `xss` must themselves be lists. This is in principle already clear by their kind, but the `SListI` gives inductive access to the list structure. |
| 16:20:35 | <viluon> | kosmikus: hi! yes! |
| 16:21:00 | <Las[m]> | sm: Yeah, I could do that, it just seems ugly since it parses it 2 times. |
| 16:21:01 | <viluon> | kosmikus: thanks for the clarification, the documentation however states that `SListI xs` ensures `xs` is a *singleton* list |
| 16:21:02 | × | dajoer quits (~david@user/gvx) (Quit: leaving) |
| 16:22:29 | <kosmikus> | viluon: oh, I see. this phrasing is unfortunate. |
| 16:22:36 | <sm[m]> | Las: if you also want the markdown part, use break and friends |
| 16:22:45 | <kosmikus> | viluon: I should probably improve it. there's a concept in type-level programming of "singleton types". |
| 16:22:53 | × | zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!) |
| 16:23:18 | <viluon> | kosmikus: oh, what are singleton types? Types of a single value? |
| 16:23:24 | <kosmikus> | viluon: a singleton type is essentially a type that establishes a one-to-one correspondence between term-level entities and type-level entities of a particular kind. |
| 16:23:58 | <kosmikus> | viluon: and you can use a singleton type as a proxy to perform induction / case distinctions on types of a kind. |
| 16:24:06 | × | alx741 quits (~alx741@181.196.69.147) (Ping timeout: 272 seconds) |
| 16:24:24 | → | cuz joins (~user@38.140.58.234) |
| 16:24:41 | <kosmikus> | viluon: so what this comment is trying to say is that the `SListI xs` constraint provides such a singleton type for the kind of type-level lists. |
| 16:24:55 | <kosmikus> | viluon: it does *not* mean to say that the list must somehow have exactly one element. |
| 16:25:12 | <kosmikus> | viluon: but I can see how the current text might give that incorrect impression. |
| 16:26:13 | <kosmikus> | viluon: btw, with any current version of generics-sop, explicitly stating this `All SListI xss` constraint on `gPrettyVal'` and `gPrettyVal''` is not actually required. it's already implied by the `All2 PrettyVal xss`. |
| 16:28:01 | <kosmikus> | viluon: a simple example of a singleton type would be the GADT `data SBool (b :: Bool) where SFalse :: SBool False; STrue :: SBool True`. |
| 16:28:01 | × | cuz quits (~user@38.140.58.234) (Remote host closed the connection) |
| 16:28:28 | → | cuz joins (~user@38.140.58.234) |
| 16:28:29 | <kosmikus> | viluon: now there's exactly one value `SFalse` corresponding to the type `False`, and one value `STrue` corresponding to the type `True`. |
| 16:29:01 | <kosmikus> | viluon: if you want to define something by induction on the kind `Bool`, you can add a parameter of type `SBool b` to it and perform pattern matching on that GADT. |
| 16:29:35 | <kosmikus> | viluon: there are a number of variations on this technique, including providing the value of type `SBool` implicitly by means of a type class. |
| 16:29:41 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 16:29:51 | <kosmikus> | viluon: `All SListI xs` does essentially that for the kind of type-level lists. |
| 16:31:20 | × | cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds) |
| 16:31:35 | → | cheater joins (~Username@user/cheater) |
| 16:37:59 | → | alx741 joins (~alx741@181.196.68.47) |
| 16:39:10 | × | chomwitt quits (~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 246 seconds) |
| 16:39:18 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 16:39:58 | <viluon> | kosmikus: thanks for the thorough explanation! |
| 16:40:58 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 16:41:31 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 16:46:09 | × | nschoe quits (~quassel@178.251.84.79) (Ping timeout: 268 seconds) |
| 16:46:38 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 16:47:57 | → | jneira[m] joins (~jneira@47.red-176-83-116.dynamicip.rima-tde.net) |
| 16:48:16 | × | argento quits (~argent0@168-227-97-29.ptr.westnet.com.ar) (Ping timeout: 246 seconds) |
| 16:55:05 | → | mekeor joins (~user@2001:a61:3430:c01:f86:cca7:c1fe:e2b4) |
| 16:55:47 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 16:57:35 | <viluon> | kosmikus: so.. with `SListI xs` you can "map" the typelevel `xs` list to a term - a list - which you can perform induction on? But you still don't know anything about its elements? |
| 16:57:59 | <viluon> | kosmikus: if so, how's that different to just saying `[x]`? |
| 16:58:13 | <viluon> | or `'[x]` |
| 17:00:20 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 258 seconds) |
| 17:01:21 | → | Deide joins (~Deide@217.155.19.23) |
| 17:01:21 | × | Deide quits (~Deide@217.155.19.23) (Changing host) |
| 17:01:21 | → | Deide joins (~Deide@user/deide) |
| 17:04:04 | <kosmikus> | viluon: let's say you want to create something like an `NP (K ()) xs`. |
| 17:04:33 | <kosmikus> | viluon: conceptually, it's easy. you just have to repeat `K ()` as often as the type-level list `xs` dictates. but how do you actually do this? |
| 17:04:57 | × | jneira[m] quits (~jneira@47.red-176-83-116.dynamicip.rima-tde.net) (Remote host closed the connection) |
| 17:05:16 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 268 seconds) |
| 17:05:18 | <viluon> | kosmikus: oh, so the constraint part is trivial, the length-preserving mapping is what counts? |
| 17:05:21 | <kosmikus> | viluon: if you define `makeNP :: NP (K ()) xs`, you have no inputs whatsoever. nothing you can perform induction on. you cannot look whether `xs` is expected to be empty or not. |
| 17:05:51 | <kosmikus> | viluon: that's why you need something extra that'll give you access to the structure of `xs`. |
| 17:06:58 | → | georg joins (~georg@84-112-37-146.cable.dynamic.surfer.at) |
| 17:07:39 | <kosmikus> | viluon: and that's what the `SListI xs` constraint provides you with. |
| 17:08:29 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Remote host closed the connection) |
| 17:08:36 | <kosmikus> | viluon: (I'm not sure what you mean by length-preserving mapping.) |
| 17:09:07 | × | georg quits (~georg@84-112-37-146.cable.dynamic.surfer.at) (Client Quit) |
| 17:13:47 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 17:18:05 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 17:19:25 | → | pavonia joins (~user@user/siracusa) |
| 17:25:35 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 17:25:51 | × | Kaipi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer) |
| 17:26:04 | → | Kaipi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 17:26:35 | × | MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 255 seconds) |
| 17:30:11 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 252 seconds) |
| 17:33:40 | → | chomwitt joins (~Pitsikoko@athedsl-16082.home.otenet.gr) |
| 17:36:29 | × | cuz quits (~user@38.140.58.234) (Ping timeout: 255 seconds) |
| 17:38:59 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 17:42:51 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 17:42:57 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 17:43:41 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 255 seconds) |
| 17:44:39 | → | hegstal joins (~hegstal@2a02:c7f:7604:8a00:5056:66c0:d6e:186f) |
| 17:45:21 | × | xerxes quits (~xerxes@117.222.64.149) (Quit: leaving) |
| 17:47:17 | × | mekeor quits (~user@2001:a61:3430:c01:f86:cca7:c1fe:e2b4) (Ping timeout: 255 seconds) |
| 17:47:42 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
| 17:48:59 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:55:44 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 17:55:47 | → | slep joins (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) |
| 17:59:28 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 18:00:00 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 252 seconds) |
| 18:02:26 | × | ray quits (~ray@user/re) (Ping timeout: 265 seconds) |
| 18:02:35 | × | chomwitt quits (~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 255 seconds) |
| 18:03:20 | → | ray joins (~ray@user/re) |
| 18:03:32 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 18:06:44 | → | cuz joins (~user@38.140.58.234) |
| 18:07:56 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 18:09:56 | → | notzmv joins (~zmv@user/notzmv) |
| 18:11:54 | × | cuz quits (~user@38.140.58.234) (Ping timeout: 256 seconds) |
| 18:15:10 | → | lavaman joins (~lavaman@98.38.249.169) |
| 18:15:10 | × | azeem quits (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 18:17:24 | → | kilolympus joins (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) |
| 18:22:40 | → | azeem joins (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) |
| 18:23:06 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 18:24:13 | → | exilepilot joins (~exile8338@host86-164-249-163.range86-164.btcentralplus.com) |
| 18:24:35 | × | zcombinator quits (~zcombinat@host-87-7-58-35.retail.telecomitalia.it) (Ping timeout: 240 seconds) |
| 18:27:53 | → | mikail joins (~mikail@90.152.14.81) |
| 18:27:54 | → | cuz joins (~user@38.140.58.234) |
| 18:28:26 | → | econo joins (uid147250@user/econo) |
| 18:28:57 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.2) |
| 18:29:40 | × | hammond_ quits (~abner@user/hammond2) (Ping timeout: 252 seconds) |
| 18:31:03 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 18:33:57 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 18:35:19 | → | flipchan joins (~yumman@user/flipchan) |
| 18:35:40 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 18:37:55 | × | phma quits (phma@2001:5b0:210b:a0c8:76df:2981:6329:1c09) (Read error: Connection reset by peer) |
| 18:39:55 | → | phma joins (phma@2001:5b0:2172:8bb8:fe9a:4d29:923:26f0) |
| 18:40:14 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
| 18:41:49 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 18:45:08 | × | Kaipi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection) |
| 18:45:39 | → | Kaipi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 18:47:00 | × | Kaipi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection) |
| 18:47:46 | → | Kaipi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 18:49:31 | → | Pickchea joins (~private@user/pickchea) |
| 18:50:24 | × | phma quits (phma@2001:5b0:2172:8bb8:fe9a:4d29:923:26f0) (Read error: Connection reset by peer) |
| 18:50:31 | × | Kaipi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer) |
| 18:50:39 | → | Kaipi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 18:51:54 | × | xff0x quits (~xff0x@2001:1a81:53dc:b800:8c77:48f3:1e3:3060) (Ping timeout: 240 seconds) |
| 18:52:55 | → | xff0x joins (~xff0x@2001:1a81:53dc:b800:d9eb:91ca:317b:6253) |
| 18:52:56 | <amesgen[m]> | tiny ANN: there does not seem to be a library providing a transformer for `Quote` of template-haskell since 9.0, so I published https://hackage.haskell.org/package/quotet/docs/Control-Monad-Quote.html |
| 18:53:47 | → | phma joins (phma@2001:5b0:211c:858:db7c:9aeb:2bd8:1b08) |
| 18:54:51 | → | argento joins (~argent0@168-227-97-34.ptr.westnet.com.ar) |
| 18:59:52 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 19:01:15 | <sm[m]> | I upvote the concept of Tiny ANN: :) |
| 19:01:29 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 19:03:02 | <amesgen[m]> | Ü |
| 19:04:47 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 19:09:25 | → | sonat_suer joins (~sonat_sue@24.133.69.243) |
| 19:12:04 | × | neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 252 seconds) |
| 19:13:57 | × | sonat_suer quits (~sonat_sue@24.133.69.243) (Client Quit) |
| 19:15:14 | × | ray quits (~ray@user/re) (Quit: WeeChat 3.2) |
| 19:20:11 | <juri_> | so, how do i get from a Set to NonEmpty in a reasonable fashion (EG: not using fromList $ elems ? ) |
| 19:20:34 | <juri_> | quite disappointed that NESet is so old. |
| 19:22:55 | <flipchan> | if anyone is interested in haskell work contracts: https://haskell.careers |
| 19:23:22 | <lyxia> | juri_: why is that not reasonable |
| 19:23:51 | <juri_> | lyxia: stan yells at me for using fromList, since elems MAY be empty. |
| 19:24:05 | <amesgen[m]> | juri_: are you looking for this: https://hackage.haskell.org/package/nonempty-containers-0.3.4.1/docs/Data-Set-NonEmpty.html#v:toList |
| 19:24:26 | <dminuoso> | juri_: Dont be a slave to your static analyzer tool? |
| 19:24:38 | <juri_> | nope. same problem. |
| 19:24:53 | <juri_> | dminuoso: I'm trying to get my project to 0 warnings. :P |
| 19:24:56 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 19:25:00 | <dminuoso> | That sounds like a weird goal. |
| 19:25:18 | <dminuoso> | Warnings should tell you about things you care about. Tools like stan are just someone elses opinion. |
| 19:25:33 | <juri_> | I've gone from 500 to <50. |
| 19:26:16 | <dminuoso> | Linters are not absolute truth. They are a reflection of someone elses opinionated coding style. |
| 19:26:28 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 19:26:37 | <dminuoso> | If you insist on stan, tune it to not warn for this instance then. |
| 19:27:23 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 19:30:09 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 19:30:40 | <s_> | juri_, presumably at some point you check that elems is not empty and handle it appropriately. At that point, you need to convert it to NonEmpty and pass everywhere instead of elems. Depending on the distance between the check and fromList, this may require a big refactoring. |
| 19:30:58 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 19:31:16 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 252 seconds) |
| 19:32:51 | <juri_> | s_: fair, and an easy opportunity. thanks. |
| 19:33:48 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 19:36:04 | × | fendor quits (~fendor@91.141.49.3.wireless.dyn.drei.com) (Remote host closed the connection) |
| 19:37:19 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 19:39:31 | × | Cajun quits (~Cajun@ip98-163-211-112.no.no.cox.net) (Quit: Client closed) |
| 19:44:28 | <dsal> | I'd never tried this stan thing. It seems really angry that I don't `!` all my fields. Also, I use `length` sometimes. |
| 19:44:59 | <davean> | dsal: wait, its angry you don't ! your fields? But ... thats not a valid thing to do in general ... |
| 19:45:01 | <juri_> | it's pretty angry in general. applying it has made my code a lot cleaner, tho. |
| 19:45:10 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 19:45:18 | <dsal> | davean: Yeah, because then they're lazy and it might space leak. |
| 19:45:40 | <dsal> | I feel like banging a TVar isn't going to do a lot. |
| 19:45:46 | <davean> | dsal: I mean, but then they're strict and might cause your program to diverge ... |
| 19:46:08 | <dsal> | What do you mean diverge? |
| 19:46:25 | <davean> | I mean that a field being strict can cause your program to run forever making no progress |
| 19:46:57 | <dsal> | Ah. |
| 19:47:10 | → | neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) |
| 19:50:43 | <dsal> | Removing that one gives me a few reasonable complaints. Nothing I'm actually going to do anything about, though. |
| 19:51:30 | ← | hatz_ parts (~user@2a05:f480:1400:f44:5400:3ff:fe6d:f349) () |
| 19:52:35 | → | jneira_ joins (~jneira_@28.red-80-28-169.staticip.rima-tde.net) |
| 19:52:49 | <dsal> | I like tools like this in theory... |
| 19:53:23 | <sm[m]> | angry tools ? |
| 19:53:47 | <juri_> | I find that when i throw my code at a tool like that, and bend the code, it gets better. i'm not too sure it matters on the tool. |
| 19:54:59 | <sm[m]> | I like the tools that are really quite angry but cover it well with a layer of helpful advice :) |
| 19:55:24 | <dsal> | I've learned useful stuff from hlint |
| 19:56:13 | <davean> | juri_: I mean thats great up to a point, and that point certainly isn't where its flat out wrong |
| 19:56:13 | <sm[m]> | +1 and shellcheck! |
| 19:57:21 | × | fluffyballoon quits (~fluffybal@199.204.58.62) (Quit: Client closed) |
| 19:57:37 | <lyxia> | juri_: ah, there's the total version: https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-List-NonEmpty.html#v:nonEmpty |
| 19:57:45 | → | fluffyballoon joins (~fluffybal@199.204.58.62) |
| 19:57:52 | <juri_> | lyxia: yep. that's what i used. |
| 19:58:26 | × | alex3 quits (~alex3@BSN-77-82-41.static.siol.net) (Ping timeout: 265 seconds) |
| 19:58:27 | × | guest61 quits (~xxx@47.245.54.240) (Remote host closed the connection) |
| 19:59:03 | <juri_> | my haskell is pretty bad, so i tend to hit it with all of the tools, to try and make it make sense to others. |
| 19:59:23 | → | alex3 joins (~alex3@BSN-77-82-41.static.siol.net) |
| 19:59:31 | <juri_> | I've written a projective geometric library... and am trying to use it to help get others into haskell. |
| 19:59:33 | → | guest61 joins (~xxx@47.245.54.240) |
| 20:00:23 | → | sheepduck joins (~sheepduck@user/sheepduck) |
| 20:00:49 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:01:56 | × | jespada quits (~jespada@90.254.247.46) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 20:02:50 | × | fluffyballoon quits (~fluffybal@199.204.58.62) (Quit: Client closed) |
| 20:03:18 | → | fluffyballoon joins (~fluffybal@199.204.58.62) |
| 20:04:35 | × | hexreel quits (~hr@69.233.98.238) (Quit: WeeChat 3.2) |
| 20:05:02 | × | roboto_el_gato quits (~roboto_el@2600:1700:7df0:4f30:ec10:cbf7:f7cc:3882) (Quit: Client closed) |
| 20:05:19 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 246 seconds) |
| 20:05:46 | × | juhp quits (~juhp@128.106.188.66) (Ping timeout: 272 seconds) |
| 20:07:10 | → | juhp joins (~juhp@128.106.188.66) |
| 20:10:40 | × | derelict quits (~derelict@user/derelict) (Quit: WeeChat 3.2) |
| 20:12:38 | × | mikail quits (~mikail@90.152.14.81) (Ping timeout: 255 seconds) |
| 20:15:32 | × | exilepilot quits (~exile8338@host86-164-249-163.range86-164.btcentralplus.com) (Read error: Connection reset by peer) |
| 20:18:24 | sm | is now known as sm[i] |
| 20:19:38 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:21:22 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 20:22:16 | × | sm[i] quits (~user@plaintextaccounting/sm) (Quit: ERC (IRC client for Emacs 27.0.50)) |
| 20:23:39 | × | oxide quits (~lambda@user/oxide) (Quit: oxide) |
| 20:23:55 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 20:24:04 | → | sm[i] joins (~user@plaintextaccounting/sm) |
| 20:25:46 | → | DNH joins (~DNH@2a02:8108:1100:16d8:99cf:ff96:88:4a77) |
| 20:26:21 | → | fendor joins (~fendor@91.141.49.3.wireless.dyn.drei.com) |
| 20:27:13 | → | acidjnk_new3 joins (~acidjnk@p200300d0c72b956384793fd2325b5113.dip0.t-ipconnect.de) |
| 20:28:50 | × | sm[m] quits (~sm@plaintextaccounting/sm) (Quit: Reconnecting) |
| 20:31:03 | → | acidjnk joins (~acidjnk@p200300d0c72b956384793fd2325b5113.dip0.t-ipconnect.de) |
| 20:31:12 | → | ray joins (~ray@user/re) |
| 20:31:22 | → | Trattue joins (~Trattue@p200300cfb7002662d870a2e06eb7728b.dip0.t-ipconnect.de) |
| 20:31:48 | × | acidjnk_new3 quits (~acidjnk@p200300d0c72b956384793fd2325b5113.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 20:33:52 | × | Trattue quits (~Trattue@p200300cfb7002662d870a2e06eb7728b.dip0.t-ipconnect.de) (Client Quit) |
| 20:44:04 | → | maf654321 joins (~maf654321@user/maf654321) |
| 20:44:21 | → | chomwitt joins (~Pitsikoko@athedsl-16082.home.otenet.gr) |
| 20:46:35 | <lechner> | Hi, is it possible to parse JSON content with optional fields when deriving a generic instance of FromJSON as described here https://www.schoolofhaskell.com/school/starting-with-haskell/libraries-and-frameworks/text-manipulation/json#step-2--the-smart-alternative |
| 20:49:05 | × | maf654321 quits (~maf654321@user/maf654321) (Ping timeout: 255 seconds) |
| 20:53:35 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds) |
| 20:55:13 | → | maf654321 joins (~maf654321@user/maf654321) |
| 20:56:10 | <janus> | lechner: if they are Maybe they will be optional afaik |
| 20:56:28 | <lechner> | janus: thank you! |
| 20:58:18 | × | NinjaTrappeur quits (~ninja@user/ninjatrappeur) (Ping timeout: 240 seconds) |
| 20:58:45 | × | ukari quits (~ukari@user/ukari) (Remote host closed the connection) |
| 20:59:26 | → | ukari joins (~ukari@user/ukari) |
| 20:59:35 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 21:01:30 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 21:02:44 | × | Atum_ quits (~IRC@user/atum/x-2392232) (Read error: Connection reset by peer) |
| 21:04:30 | → | sm[m] joins (~sm@plaintextaccounting/sm) |
| 21:04:53 | × | sm[m] quits (~sm@plaintextaccounting/sm) (Client Quit) |
| 21:05:10 | → | kayprish joins (~kayprish@46.240.143.86) |
| 21:05:21 | × | dunj3 quits (~dunj3@2001:16b8:3066:7300:d4d1:5d56:be5f:cf84) (Remote host closed the connection) |
| 21:05:54 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 21:07:06 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) (Remote host closed the connection) |
| 21:07:20 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 21:10:11 | × | jneira_ quits (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Ping timeout: 252 seconds) |
| 21:11:37 | × | dminuoso quits (~dminuoso@static.88-198-218-68.clients.your-server.de) (Changing host) |
| 21:11:37 | → | dminuoso joins (~dminuoso@user/dminuoso) |
| 21:12:09 | × | rostero quits (uid236576@id-236576.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 21:13:08 | × | viluon quits (uid453725@id-453725.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
| 21:15:26 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 272 seconds) |
| 21:15:38 | × | Megant_ quits (megant@user/megant) (Ping timeout: 258 seconds) |
| 21:18:20 | → | MQ-17J joins (~MQ-17J@8.21.10.15) |
| 21:19:26 | → | isekaijin joins (~pyon@user/pyon) |
| 21:21:26 | → | jespada joins (~jespada@90.254.247.46) |
| 21:22:20 | → | NinjaTrappeur joins (~ninja@user/ninjatrappeur) |
| 21:23:54 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) |
| 21:24:27 | → | son0p joins (~ff@181.136.122.143) |
| 21:27:21 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 21:29:55 | × | amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 21:30:11 | × | kayprish quits (~kayprish@46.240.143.86) (Remote host closed the connection) |
| 21:32:11 | × | ptr_frac7al quits (~longlong@user/ptr-frac7al/x-0038398) (Ping timeout: 252 seconds) |
| 21:33:24 | → | Megant joins (megant@user/megant) |
| 21:36:05 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Remote host closed the connection) |
| 21:36:47 | × | argento quits (~argent0@168-227-97-34.ptr.westnet.com.ar) (Ping timeout: 255 seconds) |
| 21:37:30 | → | derelict joins (~derelict@user/derelict) |
| 21:40:08 | → | trattue joins (~trattue@152.70.182.158) |
| 21:45:09 | × | stefan-_ quits (~cri@42dots.de) (Ping timeout: 258 seconds) |
| 21:46:15 | × | veverak quits (~veverak@ip-89-102-98-161.net.upcbroadband.cz) (Read error: Connection reset by peer) |
| 21:47:01 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
| 21:47:11 | × | cuz quits (~user@38.140.58.234) (Ping timeout: 246 seconds) |
| 21:47:44 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 21:49:46 | → | stefan-_ joins (~cri@42dots.de) |
| 21:51:05 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 21:55:59 | maf654321 | is now known as maf |
| 21:56:11 | maf | is now known as maf654321` |
| 21:56:13 | maf654321` | is now known as maf654321 |
| 21:57:29 | × | acidjnk quits (~acidjnk@p200300d0c72b956384793fd2325b5113.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 21:57:55 | × | maf654321 quits (~maf654321@user/maf654321) (Quit: Textual IRC Client: www.textualapp.com) |
| 22:02:03 | × | jespada quits (~jespada@90.254.247.46) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:02:17 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 22:02:44 | → | drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
| 22:02:57 | <koz> | If I want to test whether something _compiles_ (say, if I'm trying to TH stuff up) in an automated way, what's a good thing to use? |
| 22:02:57 | → | sm joins (~sm@plaintextaccounting/sm) |
| 22:03:03 | → | jespada joins (~jespada@90.254.247.46) |
| 22:03:18 | × | fluffyballoon quits (~fluffybal@199.204.58.62) (Quit: Client closed) |
| 22:03:28 | <geekosaur> | ghc -fno-code ? |
| 22:03:41 | → | fluffyballoon joins (~fluffybal@199.204.58.62) |
| 22:03:43 | <koz> | I mean, something similar to unit tests. |
| 22:03:57 | <koz> | So I can like, run it as part of a test suite and have it fail if compilation fails. |
| 22:05:40 | dminuoso | would also add -O0 to geekosaur's suggestion |
| 22:05:44 | × | neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 252 seconds) |
| 22:05:52 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:06:34 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 22:07:26 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
| 22:10:59 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 255 seconds) |
| 22:13:53 | → | argento joins (~argent0@168-227-97-34.ptr.westnet.com.ar) |
| 22:14:36 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 22:17:21 | × | argento quits (~argent0@168-227-97-34.ptr.westnet.com.ar) (Client Quit) |
| 22:20:22 | → | mikail joins (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) |
| 22:21:40 | × | trattue quits (~trattue@152.70.182.158) (Quit: bye) |
| 22:21:47 | × | cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds) |
| 22:22:11 | → | cheater joins (~Username@user/cheater) |
| 22:29:22 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
| 22:29:36 | → | aerona joins (~aerona@2600:6c54:4600:f300:c99c:8727:19f:ba14) |
| 22:29:56 | → | acidjnk joins (~acidjnk@p200300d0c72b956384793fd2325b5113.dip0.t-ipconnect.de) |
| 22:30:09 | × | slep quits (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) (Quit: No Ping reply in 180 seconds.) |
| 22:30:13 | × | mikail quits (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 246 seconds) |
| 22:30:13 | × | drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 246 seconds) |
| 22:30:22 | → | slep joins (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) |
| 22:30:43 | × | fendor quits (~fendor@91.141.49.3.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
| 22:33:01 | × | chris-the-slurpa quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 22:33:43 | → | chris-the-slurpa joins (~chris@81.96.113.213) |
| 22:37:59 | × | chris-the-slurpa quits (~chris@81.96.113.213) (Ping timeout: 255 seconds) |
| 22:38:53 | × | chomwitt quits (~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 255 seconds) |
| 22:42:29 | × | acowley quits (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer) |
| 22:50:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:51:10 | → | acowley joins (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) |
| 22:52:11 | × | kilolympus quits (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Read error: Connection reset by peer) |
| 22:53:53 | → | Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 22:53:53 | × | Kaipi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 265 seconds) |
| 22:58:07 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 22:59:19 | → | Atum_ joins (~IRC@user/atum/x-2392232) |
| 23:03:10 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 23:06:00 | → | ptr_frac7al joins (~longlong@user/ptr-frac7al/x-0038398) |
| 23:07:45 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
| 23:07:52 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 23:08:10 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
| 23:12:33 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds) |
| 23:12:53 | × | ukari quits (~ukari@user/ukari) (Remote host closed the connection) |
| 23:13:55 | → | ukari joins (~ukari@user/ukari) |
| 23:19:40 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:24:20 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds) |
| 23:25:41 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:25:44 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 244 seconds) |
| 23:34:14 | × | alx741 quits (~alx741@181.196.68.47) (Ping timeout: 255 seconds) |
| 23:38:56 | <oak-> | I've been doing my first project where I'm writing Haskell code into production system and being paid doing the work, and I must say that I'm amazed how quick I can advance on the project even though I think I'm still quite beginner with Haskell |
| 23:39:12 | <oak-> | The client said I can use any programming language I want, so I naturally chose Haskell :D |
| 23:39:23 | → | acidjnk_new joins (~acidjnk@p200300d0c72b95631d5780c7e55edf21.dip0.t-ipconnect.de) |
| 23:40:03 | → | acidjnk_new3 joins (~acidjnk@p200300d0c72b9563e5efeb4dbf0edadc.dip0.t-ipconnect.de) |
| 23:40:45 | <oak-> | The solution is already working quite well, but I think I should probably learn either MTL or Tagless Final to make the code cleaner and more readable |
| 23:40:45 | <orzo> | sounds nice |
| 23:41:00 | → | jol joins (~jol@jol.dev) |
| 23:43:08 | <oak-> | The downside is there won't be not so many hours to bill :D |
| 23:43:12 | × | acidjnk quits (~acidjnk@p200300d0c72b956384793fd2325b5113.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 23:43:43 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:44:04 | <orzo> | last time i used haskell in production, i was bitten by the poor cross support |
| 23:44:11 | × | acidjnk_new quits (~acidjnk@p200300d0c72b95631d5780c7e55edf21.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 23:44:16 | <orzo> | it was a long time ago |
| 23:44:35 | <orzo> | but ghc still isn't well known for being a great cross compiler |
| 23:45:42 | <orzo> | it's surely better now than then though |
| 23:46:02 | <orzo> | still, i wished it "just worked" |
| 23:46:05 | <oak-> | I'm doing development on Mac and then using virtual machine with Ubuntu (because the target system is using Ubuntu) to build the code and package it to .deb package, and then just deploy the .deb package to target system |
| 23:46:05 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 23:46:21 | <oak-> | At least on Mac Os and Linux it runs, I haven't tried Windows :P |
| 23:46:37 | <orzo> | i was on mac too |
| 23:46:44 | <orzo> | years ago |
| 23:46:47 | <orzo> | say 2008 |
| 23:46:50 | × | justache quits (~justache@user/justache) (Read error: Connection reset by peer) |
| 23:47:10 | <orzo> | it sounds like you got a nice dev enviro setup |
| 23:47:44 | → | justache joins (~justache@user/justache) |
| 23:47:50 | <orzo> | it's annoying how everything takes tons of resources to build nowadays |
| 23:48:01 | <orzo> | i'm using an old laptop as my main computer |
| 23:48:09 | <orzo> | that i do all my dev on |
| 23:48:31 | <orzo> | there's no reason why projects can't build on this machine |
| 23:48:49 | <orzo> | i'm particularly annoyed with the latest android tools |
| 23:48:52 | <orzo> | not haskell related |
| 23:49:19 | <oak-> | I have also done Android development in the past in various companies |
| 23:49:29 | <orzo> | i wish i could write android in haskell and use only ghc to make an apk file |
| 23:49:39 | <oak-> | Like at the operating system level, built the whole Android image from the source |
| 23:49:49 | <orzo> | oh right |
| 23:49:53 | <orzo> | that's what i wish i could avoid |
| 23:50:12 | <orzo> | but just using the sdk/studio seems to be almost as much resources as the whole os |
| 23:50:15 | <oak-> | Even with the latest hardware the clean build seems to take ~1 hour |
| 23:50:44 | <oak-> | Last Android I was building was the 8.1 or something, I haven't tried to build the latest 11 version |
| 23:51:47 | <oak-> | There's just massive amounts of Java code on the Android operating system, especially in the frameworks/base |
| 23:51:59 | <oak-> | Yeah, isn't the Android Studio based on IntelliJ IDEA or something |
| 23:52:19 | <orzo> | i'd like a way to just build apk files from java source and resources using gnu make or something |
| 23:52:22 | <koz> | oak-: Yep, I believe so. |
| 23:52:38 | <orzo> | we shouldn't need a huge sdk |
| 23:52:46 | <orzo> | android is just a linux distro ultimately |
| 23:54:33 | <oak-> | Last time I did Android App development I just used NeoVim from the shell and built with Gradle from the shell |
| 23:54:39 | <oak-> | It still uses quite much resources though |
| 23:55:47 | <orzo> | is there some reason why community people cant maintain an alternate build system for android? |
| 23:56:10 | <orzo> | it seems simple in principle, just pack .dex files and .res files into an .apk zip |
| 23:56:37 | <orzo> | gradle would be an improvement over the studio maybe, but i'm currently annoyed with it too |
| 23:57:18 | <orzo> | i think letting google maintain all the dev tools for android is not working out |
| 23:57:21 | <oak-> | Doesn't Studio use Gradle in the background? |
| 23:57:24 | <orzo> | yes |
| 23:57:31 | <orzo> | but i don't know how to use gradle |
| 23:57:41 | <orzo> | i'm coming back to android after a long hiatus |
| 23:57:41 | → | cjb joins (~cjb@user/cjb) |
| 23:57:48 | <orzo> | back in my day it was eclipse and ant |
| 23:58:41 | <oak-> | Gradle seems fine as long at it works :D |
| 23:58:46 | <orzo> | i have good makefile skills, so its a little annoying to have to work with these super ambitious build systems that ultimately just disable incremental builds |
| 23:59:47 | <oak-> | I tried Eta (compiler which compiles Haskell to Java bytecode) a year ago, and it was pain to work around all the tooling |
All times are in UTC on 2021-07-08.