Home liberachat/#haskell: Logs Calendar

Logs on 2021-08-08 (liberachat/#haskell)

00:03:20 <koz> I have 'newtype Foo (a :: Type) = Foo Bar'. I want to via-derive certain instances based on Bar for some specific Foo Baz. Can I write a non-standalone via derivation for this, or do I need a standalone?
00:14:33 <euouae> How can I learn how to use Hedgehog to write unit tests?
00:14:45 × Atum_ quits (~IRC@user/atum/x-2392232) (Quit: Atum_)
00:14:46 <euouae> I don't know where to find the docs, apart from the haddock stuff on package
00:14:51 × hubvu quits (sid495858@tinside.irccloud.com) (Ping timeout: 258 seconds)
00:14:51 <euouae> hackage*
00:14:54 <koz> euouae: Is there something specific you're not sure about? Or do you just not know where to begin as such?
00:15:01 <euouae> yeh I don't know where to begin
00:15:07 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 245 seconds)
00:15:32 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
00:16:06 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
00:16:20 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
00:17:04 <koz> Is there something specific you want to test?
00:17:11 hubvu joins (sid495858@id-495858.tinside.irccloud.com)
00:17:13 <koz> It'll help if we have a specific example to start from.
00:17:47 <euouae> I don't have anything specific I just want to understand how Hedgehog is used
00:17:57 <euouae> My understanding of it is that it is generating random stuff to test functions with
00:18:06 <euouae> and that I need to write properties that functions should have
00:18:06 <koz> euouae: That's a _small_ part of what it does.
00:18:29 <koz> It does do this, yes, but it also shrinks failing randomly-generated things to try and create a minimal repro case.
00:18:57 <euouae> That's great, how did you find out? Just reading the haddock docs?
00:19:06 <euouae> Kind of blows my mind that that's how people learn :P
00:19:10 geekosaur joins (~geekosaur@xmonad/geekosaur)
00:19:15 <koz> No - Hedgehog assumes you're at least familiar with QuickCheck and its principles.
00:19:21 <euouae> Oh I see
00:19:21 <dsal> euouae: You might find learning about QuickCheck to be a useful start. The concept is that you don't "write tests" as much as define properties that will be true for any given set of input.
00:19:23 <koz> Hedgehog is QuickCheck + different engineering choices.
00:19:50 × xff0x quits (~xff0x@2001:1a81:5329:ea00:e083:f7b4:2cd3:667d) (Ping timeout: 258 seconds)
00:19:51 <euouae> strange though that quick heck is not even mentioned once
00:20:00 <euouae> quickcheck* in the website or readme or the docs...
00:20:01 <koz> euouae: I agree.
00:20:03 <dsal> It's "property testing"
00:20:12 <monochrom> Me, my POV is it blows my mind that looking for internet hearsay is how millenials learn.
00:20:29 <euouae> monochrom: Are you talking about me? :P
00:20:41 lavaman joins (~lavaman@98.38.249.169)
00:20:46 xff0x joins (~xff0x@2001:1a81:5329:ea00:7c78:a917:7a91:b7c4)
00:21:29 <dsal> euouae: what kind of thing are you wanting to test?
00:21:51 <euouae> I haven't yet written anything. I figured that once I start writing stuff, I can use Hedgehog to test it
00:21:56 <euouae> not because it needs testing. Just to build a habit of it
00:22:04 <euouae> Just like how I write docs, it's toy projects
00:23:12 goepsilongo joins (~goepsilon@2603-7000-ab00-62ed-f514-c7d8-9e18-a2d5.res6.spectrum.com)
00:24:08 <dsal> Well, the idea is that you make a thing and then you have properties that should be true based on your intention. e.g., if I add two numbers together, the result shouldn't be smaller than either of the two numbers:
00:24:09 <dsal> @check \x y -> (x::Int8) + y > x && x + y > y
00:24:11 <lambdabot> *** Failed! Falsifiable (after 1 test and 4 shrinks):
00:24:11 <lambdabot> -1 -1
00:24:28 <dsal> I didn't think about what the numbers were, but QC shows me a simple scenario.
00:24:56 <euouae> Just don't add 0
00:25:47 <euouae> So what are things like Gen.list and Range.linear?
00:25:59 <dsal> @check \x y -> let s = (x+y) :: Word8 in s >= x && s >= y
00:26:00 <lambdabot> *** Failed! Falsifiable (after 20 tests and 7 shrinks):
00:26:00 <lambdabot> 219 248
00:26:25 <dsal> In QC, there's an Arbitrary class that is used to create values. In hedgehog, you do that more explicitly in your test.
00:27:00 <euouae> I see, so the engineering choices referred to above are about how you generate the stuff you want to stuff in your testing functions
00:27:33 <euouae> But why should the generators involve a Monad? Why a MonadGen?
00:28:08 <dsal> Also a lot about shrinking. Shrinking is essential and kind of hard in QC, but mostly built-in in hedgehog.
00:28:19 <euouae> Hmmm
00:28:23 <dsal> Generators are a monad because they generate arbitrary values based on a random seed.
00:28:39 <euouae> The shrinking is achieved how exactly?
00:28:44 <euouae> I saw something about trees in the docs
00:28:53 <dsal> I'm pretty new to hedgehog. I still find QC easier except when I have complicated shrinks to write.
00:29:03 <dsal> These aren't things you have to think about in the short term. :)
00:29:18 <Axman6> you might want to watch https://www.youtube.com/watch?v=AIv_9T0xKEo
00:29:35 <euouae> Nice, thank you
00:29:56 <Axman6> and IIRC https://www.youtube.com/watch?v=boBD1qhCQ94 is also quite good
00:31:04 × yaroot quits (~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
00:31:56 yaroot joins (~yaroot@6.3.30.125.dy.iij4u.or.jp)
00:32:13 <euouae> Thank you
00:32:26 <euouae> I'm going to watch these later today and try to use Hedgehog on my Hangman game lol
00:32:46 <Axman6> Make sure you've got enough rope!
00:33:04 <euouae> hehe
00:35:35 <euouae> koz: I'm sorry, I didn't mean to steal your spotlight of your question
00:35:43 <koz> euouae: There's nothing to apologize for.
00:36:00 <koz> > :t showHex
00:36:01 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
00:36:08 <koz> > showHex 20 " "
00:36:10 <lambdabot> "14 "
00:36:18 <koz> OK, so that _does_ work how I thought it did.
00:40:36 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
00:40:50 dajoer joins (~david@user/gvx)
00:42:14 <koz> Is there a way to make showHex output capitals, and always print at least 2 symbols, or is this firmly in 'do it your damned self' territory?
00:42:29 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
00:45:06 <geekosaur> may be in Text.Printf territory
00:45:44 <geekosaur> > printf "%02X" 13
00:45:46 <lambdabot> error:
00:45:46 <lambdabot> • Ambiguous type variable ‘a0’ arising from a use of ‘show_M628767080926...
00:45:46 <lambdabot> prevents the constraint ‘(Show a0)’ from being solved.
00:45:55 <geekosaur> > printf "%02X" 13 :: String
00:45:56 <lambdabot> "0D"
00:46:29 <koz> > printf "| %02X | %02X |" (12 :: Word8) (57 :: Word8)
00:46:30 <lambdabot> error:
00:46:30 <lambdabot> • Ambiguous type variable ‘a0’ arising from a use of ‘show_M110101264447...
00:46:30 <lambdabot> prevents the constraint ‘(Show a0)’ from being solved.
00:46:38 <koz> > printf "| %02X | %02X |" (12 :: Word8) (57 :: Word8) :: String
00:46:40 <lambdabot> "| 0C | 39 |"
00:46:43 <koz> :D
00:46:46 <koz> Perfect, thanks!
00:51:15 × enoq quits (~enoq@194-208-179-35.lampert.tv) (Quit: enoq)
00:51:30 × pe200012 quits (~pe200012@113.105.10.33) (Ping timeout: 240 seconds)
00:51:46 pe200012 joins (~pe200012@218.107.49.28)
00:58:47 lavaman joins (~lavaman@98.38.249.169)
01:00:29 × xsperry quits (~as@user/xsperry) (Remote host closed the connection)
01:05:06 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
01:12:42 × xff0x quits (~xff0x@2001:1a81:5329:ea00:7c78:a917:7a91:b7c4) (Ping timeout: 240 seconds)
01:14:47 × sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 252 seconds)
01:14:58 xff0x joins (~xff0x@2001:1a81:533f:2500:e6ab:58ee:e458:ff3a)
01:15:45 <dsal> euouae: Let me know if you want some help conceiving of properties. It's a distinct skill. e.g. your `gameOver` type function signals `Won` forAll cases where all letters have been guessed. There's a library called hedgehog-corpus that is useful for arbitrary string inputs.
01:17:48 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:28:04 × euouae quits (~euouae@user/euouae) (Ping timeout: 246 seconds)
01:35:37 lavaman joins (~lavaman@98.38.249.169)
01:39:57 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
01:46:21 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
01:46:28 × goepsilongo quits (~goepsilon@2603-7000-ab00-62ed-f514-c7d8-9e18-a2d5.res6.spectrum.com) (Quit: Textual IRC Client: www.textualapp.com)
01:52:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
01:58:47 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
01:58:56 sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
02:07:54 × sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds)
02:13:37 lavaman joins (~lavaman@98.38.249.169)
02:13:50 byorgey joins (~byorgey@155.138.238.211)
02:14:37 spruit11_ joins (~quassel@2a02:a467:ccd6:1:55d2:a8d9:e00b:3a3a)
02:15:07 × pe200012 quits (~pe200012@218.107.49.28) (Ping timeout: 245 seconds)
02:15:14 pe200012_ joins (~pe200012@218.107.49.28)
02:15:59 × spruit11 quits (~quassel@2a02:a467:ccd6:1:d1df:9f45:a279:94ce) (Ping timeout: 258 seconds)
02:16:02 euouae joins (~euouae@user/euouae)
02:16:09 <euouae> Hello
02:16:30 <euouae> I get issues with stack and `stack ghci` related to Paths_* stuff
02:16:37 <euouae> In every project I make, what is that error about?
02:18:08 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
02:19:27 <dsal> What error?
02:19:36 <dsal> Are you using nix
02:19:37 <dsal> ?
02:20:24 <euouae> /msg tomsmeding Can you delete this paste please? https://paste.tomsmeding.com/PY3P7tsP I accidentally pasted my full name
02:20:27 <euouae> Ah great
02:20:28 <euouae> lol
02:21:01 <dsal> selfdox
02:21:04 <koz> This is a slightly odd one. Is there a conversion between Ordering and 8-bit numbers (signed or unsigned, I don't really mind) such that we can define a branchless equivalent to <> on Orderings on said numbers?
02:21:19 <euouae> Anyway deal check that dpaste if you want to see the error I'm getting dsal
02:21:38 <dsal> > (subtract 1) . fromEnum $ LT
02:21:39 <lambdabot> -1
02:21:47 × td_ quits (~td@94.134.91.140) (Ping timeout: 245 seconds)
02:21:48 <dsal> > (subtract 1) . fromEnum <$> [LT .. ]
02:21:49 <lambdabot> [-1,0,1]
02:21:53 <koz> (meaning that if I take two Orderings x and y, convert them, then do this operation and convert back, it should be the same as x <> y)
02:22:52 zmt00 joins (~zmt00@user/zmt00)
02:22:52 <dsal> euouae: Oh. I just ignore those warnings.
02:23:02 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
02:23:16 <euouae> deal but note that I don't get the symbols
02:23:25 <euouae> dsal: For example `:t hiddenWord` like I do
02:23:26 geekosaur joins (~geekosaur@xmonad/geekosaur)
02:23:28 <dsal> There are multiple targets in your project so there's ambiguity.
02:23:39 <euouae> the other target being `tests`?
02:23:49 <dsal> Are those symbols in Main?
02:23:54 <euouae> in Lib
02:23:54 td_ joins (~td@94.134.91.249)
02:24:08 <dsal> Are they exported?
02:24:12 <dsal> :browse Lib
02:24:14 <euouae> Oops
02:24:38 <euouae> That was my issue, I thought maybe the warning was the issue
02:26:10 × Melantha quits (~pyon@user/pyon) (Quit: WeeChat 3.2)
02:30:08 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:30:08 FinnElija is now known as Guest19
02:30:08 × Guest19 quits (~finn_elij@user/finn-elija/x-0085643) (Killed (silver.libera.chat (Nickname regained by services)))
02:30:08 finn_elija is now known as FinnElija
02:35:15 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
02:36:21 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
02:44:53 × euouae quits (~euouae@user/euouae) (Quit: Ping timeout (120 seconds))
02:46:11 euouae joins (~euouae@user/euouae)
02:51:48 lbseale joins (~lbseale@user/ep1ctetus)
02:52:24 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
02:56:30 × euouae quits (~euouae@user/euouae) (Quit: Ping timeout (120 seconds))
02:57:37 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 245 seconds)
03:00:20 damxsa joins (~damx@2001:16a2:cfd8:e500:40e7:6a69:a396:39e9)
03:07:32 × MQ-17J quits (~MQ-17J@8.21.10.94) (Ping timeout: 272 seconds)
03:11:15 × damxsa quits (~damx@2001:16a2:cfd8:e500:40e7:6a69:a396:39e9) (Quit: Leaving)
03:11:18 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
03:12:30 × lbseale quits (~lbseale@user/ep1ctetus) (Quit: Leaving)
03:15:42 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
03:17:18 euouae joins (~euouae@user/euouae)
03:18:00 <euouae> Here's my hangman game although I'm not satisfied with this one https://paste.tomsmeding.com/EIfcTeUc
03:18:20 <euouae> It is too hack-y, I'd rather have more data instead of functions such as `isWon`
03:18:36 <euouae> and all these conditions in the game loop and character guessing function
03:20:31 × PinealGlandOptic quits (~PinealGla@37.115.210.35) (Quit: leaving)
03:24:05 <euouae> Yeah this is pointless to test too. I should try to write something way more complicated
03:27:06 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 268 seconds)
03:28:23 × alx741 quits (~alx741@186.178.108.253) (Quit: alx741)
03:28:24 Maxdamantus joins (~Maxdamant@user/maxdamantus)
03:33:54 <jle`> i love haskell hangman implementations
03:34:46 <euouae> I wonder if I can write a hangman implementation using banana
03:34:54 <euouae> reactive-banana*
03:34:57 <jle`> euouae: one thing you can do is keep a set of letters-to-guess
03:35:03 <jle`> and delete items as they are guessed
03:35:10 <jle`> then when your letters-to-guess set is empty, the game is won
03:35:18 <jle`> basically invert your 'guesses'
03:35:53 <jle`> definitely not a necessary change, but i'm guessing this is the sort of thing you are looking for if you want more "data-encoded" logic than function-driven
03:36:14 <jle`> where the results are self-evident based on the structure of the data, instead of having to write a function with business logic
03:36:25 <euouae> One thing I did in a previous implementation was to keep a "previousState" which encoded what happened at the last iteration
03:36:41 <euouae> so a newly-created game would have "New" and if there was a wrong guess, it'd be "WrongGuess", etc
03:37:38 × pe200012_ quits (~pe200012@218.107.49.28) (Ping timeout: 258 seconds)
03:37:42 pe200012 joins (~pe200012@113.105.10.33)
03:37:45 Skyfire joins (~pyon@user/pyon)
03:37:47 <euouae> so instead of an isWon function, I could just guard on "Won" state
03:38:16 <jle`> hm, storing "projectsion" of data i think may be a step in the wrong direction, unless it's for performance reasons
03:38:34 <jle`> if you stored `lettersLeftUnguessed` as a set, then that's similar to your new/won sort of thing
03:38:41 <jle`> because you can guard S.empty lettersLeftUngessed
03:38:53 <jle`> it sort of follows the principal of avoiding boolean blindness, too
03:39:33 <euouae> S.empty whatever doesn't translate to Lost/Won, it's not clear. I prefer the type description
03:39:57 <euouae> Although the name you chose is descriptive for sure
03:40:10 <jle`> right, you need S.empty plus a S.size on wrongGuesses
03:41:06 × peterhil quits (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Ping timeout: 272 seconds)
03:42:00 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
03:42:22 <euouae> It's funny that I remember reading the docs of reactive-banana, but I don't remember /what for/...
03:42:34 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
03:43:27 <jle`> i guess the principle here is to move as much business logic as possible into things evident in the structure of your data, instead of extra logic (like 'hiddenWord')
03:43:45 <jle`> but honestly your implementation now is great
03:44:53 <euouae> Thank you :D
03:45:58 <euouae> I'm thinking the `pure game` stuff is not needed
03:46:22 <euouae> eh maybe if someone wants the final state
03:46:40 euouae goes back to studying
03:48:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:49:15 Erutuon joins (~Erutuon@user/erutuon)
03:50:22 <Cajun> are you going for a functionally pure implementation of hangman? ive seen a relatively terse form of hangman that is made of IO functions (from Programming in Haskell) https://paste.tomsmeding.com/fDlIxr1F
03:52:32 × euouae quits (~euouae@user/euouae) (Quit: Ping timeout (120 seconds))
03:55:01 <Cajun> though i do like the implementation, very clean in my books
04:03:33 wei2912 joins (~wei2912@112.199.250.21)
04:05:46 <jle`> hangman in particular is really great because there are so many ways to approach it. so it's something you can do multiple times during your haskell learning journey, and see how you do it differently every time :)
04:05:54 <jle`> it's one of my favs
04:06:42 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
04:08:43 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
04:11:15 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
04:11:58 lavaman joins (~lavaman@98.38.249.169)
04:13:52 peterhil joins (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
04:16:22 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
04:17:36 sm2n_ is now known as sm2n
04:22:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
04:26:44 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 252 seconds)
04:27:26 × shachaf quits (~shachaf@user/shachaf) (Quit: Reconnecting)
04:27:33 shachaf joins (~shachaf@user/shachaf)
04:39:34 <Cajun> didnt think of it that way, yeah i can see that. if i approached it several months ago i would just use IO everywhere, but i would probably do something like what euouae did if i were to go about it now :)
04:48:42 × mousey quits (~skymouse@gateway/tor-sasl/mousey) (Ping timeout: 244 seconds)
04:51:39 mousey joins (~skymouse@gateway/tor-sasl/mousey)
04:52:28 × emliunix quits (~emliunix@103.138.75.119) (Remote host closed the connection)
04:52:51 emliunix joins (~emliunix@2a09:bac0:23::815:bca)
04:57:06 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds)
05:00:33 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: gone to sleep. ZZZzzz…)
05:14:48 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
05:16:10 <sm> hangman, cool. I'm going to make that next
05:19:27 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:19:28 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
05:20:04 MQ-17J joins (~MQ-17J@8.21.10.94)
05:23:27 tjakway joins (~tjakway@154.21.212.27)
05:38:04 endlesseditions joins (~endlessed@205.220.252.162)
05:55:58 cheater joins (~Username@user/cheater)
05:56:24 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
06:06:05 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
06:08:15 euouae joins (~euouae@user/euouae)
06:10:54 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 276 seconds)
06:12:51 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
06:12:58 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
06:13:16 × favonia quits (~favonia@user/favonia) (Ping timeout: 258 seconds)
06:15:00 × tjakway quits (~tjakway@154.21.212.27) (Quit: WeeChat 1.9.1)
06:16:56 burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk)
06:17:37 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds)
06:19:03 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:19:07 × endlesseditions quits (~endlessed@205.220.252.162) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
06:20:54 <sm> cool, I already did
06:22:47 <sm> and damn, it's hard. Ebionitic ? what ?
06:23:17 <sm> "refers to a Jewish Christian sect who were vegetarians, viewed poverty as holy, believed in ritual ablutions, and rejected animal sacrifices"
06:24:34 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
06:25:35 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
06:27:50 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
06:27:51 Lord_of_Life_ is now known as Lord_of_Life
06:28:54 sander joins (~sander@user/sander)
06:30:21 <euouae> a -> b -> c is the same as a -> (b -> c) right?
06:32:31 <Cajun> i believe that (->) is right associative by default, so i believe so
06:32:58 <Cajun> plus thats just currying in a nutshell
06:33:11 <euouae> I am trying to understand the following: `(,) <$> (1+) <*> (2+) 0`
06:33:53 <euouae> I missed a parenthesis, `((,) <$> (1+) <*> (2+)) 0`
06:34:03 <euouae> But I can't even understand `(,) <$> (1+)`
06:34:38 <euouae> Somehow I need to interpret the type of (1+) as F a, which I don't see
06:34:43 <Cajun> `<$>` is really the infix of `fmap` but i read to read it as `pure <*>` because that is more in the applicative style\
06:36:01 epolanski joins (uid312403@id-312403.brockwell.irccloud.com)
06:36:46 <Cajun> `(->) a` since `(1+)` is `Num a => a -> a`
06:37:08 <euouae> is Num the functor?
06:37:13 <euouae> wait, no
06:37:21 <Cajun> this may hurt your head but (->) is a functor
06:37:29 <Cajun> it has instances for functor, applicative, and monad iirc
06:37:37 vysn joins (~vysn@user/vysn)
06:37:46 <tomsmeding> also Monoid :p
06:37:52 <euouae> if -> is a functor then what is the type of (1+)? F a
06:38:04 <tomsmeding> no, ((->) a) is a functor
06:38:12 <euouae> It's `F a` where `F = ((->) a)` ?
06:38:15 <tomsmeding> (->) takes two type variables; a functor necessarily takes only one
06:38:36 <Cajun> youre `fmap` 'ing `(,)` to the functor (-> a)
06:38:43 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
06:39:38 <euouae> if a function is `a -> b` then it's `F b` right
06:39:47 <euouae> For `F` the functor you're describing?
06:39:47 img joins (~img@user/img)
06:40:04 <euouae> Or am I going the wrong way? Is it `F a` for `F = ((->) b`?
06:40:05 <tomsmeding> yeah, where F = (->) a
06:40:11 <tomsmeding> so F b = (->) a b = a -> b
06:40:12 <euouae> Alright
06:40:21 <euouae> Great, thank you
06:41:41 <euouae> am I supposed to be able to think of stuff like (,) <$> f <*> g
06:41:49 <euouae> or is it something someone thought once and now it's an idiom?
06:42:18 <Cajun> ive found that i like to use applicatives when monads are overkill
06:42:26 endlesseditions joins (~endlessed@205.220.252.162)
06:42:30 <tomsmeding> you will be able to think of that, when you've worked with applicatives long enough :)
06:42:42 <Cajun> but remember that <$> is just fmap, dont be afraid of the scary symbols :)
06:43:29 <tomsmeding> in particular, knowing that ((->) a) is just the Reader monad, helps in figuring out how this works :p
06:43:44 <euouae> Yeah I definitely had entirely forgotten about ((->) a)
06:43:52 <euouae> which I think I've only heard in passing and not sure where from
06:44:31 <Cajun> its strange going from thinking (->) is a language implemented thing to realizing its defined within the language with instances
06:45:04 <Cajun> that kinda hurt my head when the exercise of "write the functor, applicative, and monad instances of (->)" came up
06:45:41 <tomsmeding> (well, (->) is really still a built-in thing at the end; it's just "methods attached to it" (instances) that are library-defined)
06:45:44 <tomsmeding> but yeah
06:46:15 <tomsmeding> wait until you learn Agda and start defining mixfix operators
06:46:52 <Cajun> ive heard agda lets you go down the rabbit hole of the stuff above kinds... scary
06:48:41 <euouae> even trying on paper I still can't understand (,) <$> f
06:49:13 <euouae> at least not for a general f :: a -> b
06:49:19 <euouae> which I'm not even sure if exists
06:49:46 <Cajun> i would say try with something other than (,) as that takes both an `a` and `b`
06:50:23 <euouae> no wait a moment
06:50:27 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
06:50:30 <euouae> if we think of the functor as ((->) a)
06:50:51 <euouae> then the signature (a -> b) -> F a -> F b of <$> simply says to post-compose F a with (a -> b)
06:51:05 <euouae> in other words g <$> f is the same as g(f(x))
06:51:31 <tomsmeding> https://hackage.haskell.org/package/base-4.14.0.0/docs/src/GHC.Base.html#line-969
06:51:53 img joins (~img@user/img)
06:52:49 <euouae> so in other words, to post-compose f x with (,) giving (f x, )
06:52:51 <Cajun> im not sure thats entirely true euouae . thats implying `f :: f a`
06:53:08 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
06:53:10 <Cajun> `(<$>) :: Functor f => (a -> b) -> f a -> f b`
06:55:15 <Cajun> `g <$> f` is saying youre `fmap` 'ing `g` over `f`
06:55:27 <Cajun> or rather `pure g` applied to `f`
06:55:56 <tomsmeding> ("applied" in the sense of <*> or ap)
06:56:09 <euouae> whereas <*> is composition to the second argument, i.e. if you have `f x y` and `g z` you can write `f <*> g` to mean the map `z, y -> f (g y) z`
06:56:49 <euouae> sorry I meant `f y (g z)`
06:57:05 <tomsmeding> isn't it `\z -> f z (g z)`
06:57:26 <tomsmeding> (<*>) :: (a -> b) -> (z -> a) -> (z -> b)
06:57:37 <tomsmeding> um no
06:57:38 <tomsmeding> that's fmap
06:57:40 <euouae> It's F (a -> b) -> F a -> F b, which means F is consuming 1 argument ((->) c)
06:57:47 <tomsmeding> (<*>) :: (z -> a -> b) -> (z -> a) -> (z -> b)
06:58:02 <tomsmeding> where of course F = (->) z
06:58:27 × pe200012 quits (~pe200012@113.105.10.33) (Quit: Konversation terminated!)
06:58:27 <Cajun> it may be better to just not use <$> when learning applicatives, it may be confusing you a bit
06:59:46 <euouae> think of F (a -> b) as a function f that takes 2 arguments
06:59:58 pe200012 joins (~pe200012@113.105.10.33)
06:59:58 <euouae> and F a as a function g that takes 1 argument
07:00:19 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
07:00:20 <euouae> so f <*> g x === f x (g x)
07:00:24 <euouae> Like you said tomsmeding
07:00:51 <tomsmeding> note, f <*> g x is not the same as (f <*> g) x
07:00:58 <tomsmeding> apart from that, yes :)
07:00:58 <Drew[m]1> If just learning applicatives was the goal I wouldn't start with the reader function applicative IMO, unless learning the reader applicative was the specific goal
07:01:12 <euouae> My goal is not learning applicative
07:01:21 <euouae> I was reading an example from reactive-banana that used this trick
07:01:28 <euouae> https://github.com/HeinrichApfelmus/reactive-banana/blob/master/reactive-banana/doc/examples/SlotMachine.hs#L49
07:02:22 <Cajun> applicatives are definitely something to pick up
07:02:36 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
07:02:50 <Cajun> imo its as important as learning functors and monads as they all share similar aspects
07:03:11 <euouae> Do you mean, study the instances of applicative?
07:03:21 <euouae> or the interface
07:04:04 <tomsmeding> heh that makeSources function could do with a type annotation perhaps
07:04:45 <Cajun> i mean in the sense of learning anything in the language. just as you learn functors and monads, applicatives should be picked up too
07:04:59 <Drew[m]1> euouae: If the functor wasn't reader and was instead a list, would you get `f <$> x <*> y`?
07:04:59 <Drew[m]1> For example `[(+), (*)] <$> [1,2] <*> [1, 10, 100]`
07:05:40 <tomsmeding> list bad example, both the normal list applicative instance and ZipList are sensible :p
07:05:52 <Cajun> the chapter "functors, applicatives, and monads" in Programming in Haskell would probably get you up to speed, and its also why i say you shouldnt use <$> until youre comfortable with `pure <*>` instead
07:05:53 <tomsmeding> but yeah
07:05:58 × endlesseditions quits (~endlessed@205.220.252.162) (Quit: Textual IRC Client: www.textualapp.com)
07:06:14 <Drew[m]1> Or `Just (+) <$> Just 2 <*> Just 5`
07:06:15 <euouae> Drew[m]1: I would need to know the instances of these things for the list and I don't know them and it's not important right now either :P
07:07:09 <euouae> tomsmeding: Where is newAddHandler coming from? I don't see it anywhere defined in the source
07:07:21 <euouae> It's not imported nor defined
07:07:22 <Cajun> applicative instance for list is cartesian product iirc
07:07:37 <tomsmeding> euouae: presumably here? https://hackage.haskell.org/package/reactive-banana-1.2.1.0/docs/Control-Event-Handler.html#v:newAddHandler
07:07:52 <Drew[m]1> Oops my list example was bad, wasn't it
07:07:56 <tomsmeding> Cajun: yeah
07:07:59 <euouae> oh Interesting
07:08:32 <Cajun> yes it was Drew[m]1 but all you need to do to fix it is change [(+), (*)] to either (+) or (*)
07:08:33 <tomsmeding> ( euouae: what I did was go to the hackage page of reactive-banana, type 's', type newAddHandler, press Enter :p )
07:08:39 <Drew[m]1> Should've been `(+) <$> [1,2] <*> [1, 10, 100]`
07:08:52 <euouae> tomsmeding: but that module is not imported, how do they use newAddHandler?
07:09:38 <Cajun> tomsmeding thats a feature!? how did i never know of this
07:10:01 <tomsmeding> euouae: Reactive.Banana.Frameworks re-exports module Control.Event.Handler
07:10:12 <tomsmeding> (search for Control.Event.Handler on https://hackage.haskell.org/package/reactive-banana-1.2.1.0/docs/Reactive-Banana-Frameworks.html )
07:10:21 <euouae> Oooh...
07:10:26 <tomsmeding> so the applicative here is IO !
07:11:00 <euouae> not the arrow
07:11:02 <euouae> ?
07:11:21 <tomsmeding> nope
07:11:25 <tomsmeding> newAddHandler :: IO something
07:11:38 <tomsmeding> so (,) <$> newAddHandler <*> newAddHandler :: IO (something, something)
07:11:45 <Cajun> oh thats neat
07:11:47 <Drew[m]1> Cajun: Without knowing the keybinds it can be accessed with the "quick jump" button on the module contents page. That's how I found it.
07:11:49 <tomsmeding> where something = (AddHandler a, Handler a)
07:12:14 <Drew[m]1> package contents page I mean
07:12:28 <Cajun> Drew[m]1 if only that werent in size 10 font lol
07:12:35 <Cajun> nice to know though
07:12:42 mattil joins (~mattilinn@87-92-149-13.rev.dnainternet.fi)
07:13:04 <tomsmeding> and Handler a = a -> IO (), so makeSources :: ((AddHandler a, a -> IO ()), (AddHandler a, a -> IO ())), which happens to match (EventSource a, EventSource a) as defined in SlotMachine.hs, which is the type of the argument of networkDescription that it's put in :)
07:13:51 <tomsmeding> of course, without IO because makeSources is bound with <- first
07:14:28 <euouae> You're good :P I'm not
07:15:10 <tomsmeding> this is just experience with untangling messes of type synonyms more than anything else :p
07:15:56 <euouae> I'm still lost as to how one is supposed to learn a module of Haskell
07:16:01 <Cajun> there should be a tool for that.. or maybe an implementation of it in ghcide
07:16:20 <euouae> reactive-banana for example, I am looking at the docs but I don't get a sense of understanding what to do
07:16:28 <Cajun> hope and pray for good documentation :)
07:16:51 <Cajun> that pretty much goes for most languages, no documentation and its a real pain to decipher code
07:17:35 <tomsmeding> isn't reactive-banana an FRP framework? I've never worked with those, but I believe that's a whole separate paradigm that you might not have seen before yet
07:17:40 cheater joins (~Username@user/cheater)
07:18:00 <tomsmeding> so unless you're exceptionally smart, I wouldn't expect being able to learn how to effectively use that from just per-function reference documentation
07:18:01 <euouae> yeah it is
07:18:17 <tomsmeding> (or unless that reference documentation is exceptionally good)
07:18:19 <euouae> Ok what's the first step then? Read a paper on FPR?
07:18:26 <tomsmeding> read a tutorial on FRP :p
07:18:41 <tomsmeding> or I guess a paper if you're cool
07:18:54 gehmehgeh joins (~user@user/gehmehgeh)
07:19:17 × burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 245 seconds)
07:19:27 <euouae> No a tutorial is the right thing. I'll try, thanks
07:20:17 <Drew[m]1> reactive-banana also has a link to examples in its entry on the Haskell wiki
07:21:57 <euouae> Yeah I tried the simplest example and I'm having a hard time :P
07:22:39 × kmein quits (~weechat@user/kmein) (Quit: ciao kakao)
07:23:14 kmein joins (~weechat@user/kmein)
07:33:11 lavaman joins (~lavaman@98.38.249.169)
07:34:35 sm pops up from hangman-in-elm rabbit hole
07:35:04 <Hecate> hi sm!
07:35:12 <sm> hello Hecate
07:35:57 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 245 seconds)
07:37:01 <euouae> sm: This one? https://en.wikipedia.org/wiki/Hangman%27s_Elm
07:37:57 <sm> heh, no
07:38:52 <sm> nice tree, thanks
07:39:34 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
07:39:36 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
07:46:38 euouae won't leave the office if they don't write a hangman using banana and hedgehog
07:47:11 × MQ-17J quits (~MQ-17J@8.21.10.94) (Ping timeout: 258 seconds)
07:47:33 igghibu joins (~igghibu@37.120.201.121)
07:48:30 <sm> that's the spirit!
07:49:45 <sm> I put in about 1.25h on hangman in elm, it wasn't quite as productive as hoped
07:49:47 mikoto-chan joins (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
07:50:44 <sm> next time: simply get console version working on the web using twain
07:56:32 <[exa]> web needs more console
07:58:19 <Drew[m]1> I've personally wasted quite some time bashing my head against the wall trying to understand various FRP libraries before I was ready. IMO Haskell FRP frameworks are something that Haskellers may be quick to hype but pay most dividends to folks who are considerably familiar with Haskell
08:01:40 MQ-17J joins (~MQ-17J@8.6.144.235)
08:02:51 <euouae> It's a pyramid scheme
08:03:09 <euouae> :P but seriously I'm reading some tutorials and what I can. Let's see if I can understand something
08:07:30 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
08:08:08 hendursa1 joins (~weechat@user/hendursaga)
08:09:19 × igghibu quits (~igghibu@37.120.201.121) (Quit: Textual IRC Client: www.textualapp.com)
08:10:32 lavaman joins (~lavaman@98.38.249.169)
08:10:43 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:13:27 × Vajb quits (~Vajb@2001:999:251:bada:1067:ceb1:260a:e753) (Ping timeout: 245 seconds)
08:13:46 Vajb joins (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583)
08:15:08 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
08:17:27 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:28 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:31 allbery_b is now known as geekosaur
08:17:56 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
08:28:33 jakalx joins (~jakalx@base.jakalx.net)
08:29:59 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
08:31:55 retro_ joins (~retro@5ec19a54.skybroadband.com)
08:32:12 mc47 joins (~mc47@xmonad/TheMC47)
08:33:13 <euouae> how do I list the targets in cabal?
08:34:40 <euouae> Hm, maybe not possible...
08:35:06 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 258 seconds)
08:35:06 × retroid_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 258 seconds)
08:36:12 retroid_ joins (~retro@5ec19a54.skybroadband.com)
08:36:52 × retro_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 272 seconds)
08:37:20 <euouae> How can I load the example in reactive-banana in ghci?
08:37:53 <euouae> I tried `cabal repl ./doc/examples/Counter.hs` but there's no target including it
08:38:18 × xkuru quits (~xkuru@user/xkuru) (Remote host closed the connection)
08:42:53 <euouae> I've also tried `cabal repl` at the root directory followed by `:load ./doc/examples/Counter.hs`
08:43:00 <euouae> I don't get any errors but there does not seem to be any symbols exported
08:43:25 <euouae> I only get: [21 of 21] Compiling Main ( doc/examples/Counter.hs, interpreted ) which I'm not sure what it means
08:44:03 <euouae> with `:browse Main` I get `main:Main.main :: IO ()` but :P again not sure what this means
08:44:38 <Cale> try executing main?
08:45:01 <euouae> Not in scope
08:46:18 <euouae> There's this bug about implicit module name handling, https://github.com/haskell/cabal/issues/5665
08:46:31 <euouae> Could it be that I'm encountering this bug? I'm noticing that Counter.hs does not have a module name
08:47:02 <Cale> Well, if it's intended to produce an executable, its module name would be Main (implicitly)
08:47:33 lavaman joins (~lavaman@98.38.249.169)
08:49:07 <euouae> I don't know if it is intended or not
08:49:12 <euouae> I'm just trying to load the example and run main
08:49:21 <euouae> This example, https://github.com/HeinrichApfelmus/reactive-banana/blob/master/reactive-banana/doc/examples/Counter.hs
08:49:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:50:48 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
08:50:58 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:51:50 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
08:51:53 <Cale> One thing that of course works is just to install the library and then load the thing in ghci
08:52:21 <euouae> How do you do that
08:52:31 <euouae> I know I can use cabal-install to install the library, but how do I load the thing?
08:55:41 <Cale> You'd just give the file as a command line argument to ghci
08:55:50 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
08:58:47 <euouae> `cabal install reactive-banana` can't resolve dependencies
09:00:19 <Cale> I don't suppose you have the nix package manager hanging around on your system already? :)
09:00:47 <maerwald[m]> beat the problem to death with more complexity :p
09:00:50 <Cale> I have a one line script called "ghcWithPackages" in my ~/bin which consists of:
09:00:52 <Cale> nix-shell -p "(import <nixpkgs> {}).haskell.packages.ghc865.ghcWithPackages (pkgs: with pkgs; [ $* ])"
09:01:10 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 258 seconds)
09:01:12 <euouae> I don't know what you're asking me Cale
09:01:17 <euouae> it's a macOS
09:01:17 <Cale> er, actually, just changed that to ghc884 but the clipboard was still out of date :)
09:01:23 <Cale> aaah
09:02:03 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
09:02:24 <Cale> nix is a package manager that can put you into shells where various dependencies are satisfied
09:02:35 <maerwald[m]> you don't need nix
09:02:39 <maerwald[m]> `cabal repl -w ghc-8.6.5 --build-depends reactive-banana` should work
09:02:58 <maerwald[m]> if you're already struggling with cabal, nix will just be a nightmare
09:03:08 <Cale> Of course you don't need it, but it can be handy if cabal's dependency resolution is not working :P
09:03:15 <maerwald[m]> it is working
09:03:45 <euouae> Cannot find ghc?
09:03:55 <maerwald[m]> euouae: yes, install 8.6.5
09:04:02 <maerwald[m]> euouae: how did you install ghc?
09:04:14 <euouae> Is there something about that particular version?
09:04:20 <euouae> I installed with the script from Haskell.org
09:04:31 <maerwald[m]> it has a different base version... base is causing resolution error
09:04:36 <maerwald[m]> base is tied to GHC
09:04:41 <maerwald[m]> it's the haskell prelude and other stuff
09:04:47 <euouae> `cabal install ghc-8.6.5` also fails to resolve dependencies
09:05:02 <maerwald[m]> euouae: try `ghcup install ghc 8.6.5`
09:05:21 <euouae> Yeah that worked
09:05:31 <maerwald[m]> 8.6.5 is a very popular version, although it's a little old
09:05:34 <euouae> so basically reactive-banana is using some other version of Base?
09:05:47 <maerwald[m]> I haven't checked in detail
09:05:56 <euouae> potentially, though?
09:06:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
09:06:58 <euouae> OK I installed with the ghcup command, now what? The -w ghc-8.6.5 still fails
09:06:58 __monty__ joins (~toonn@user/toonn)
09:07:03 <euouae> Cant' find 'ghc'
09:07:48 <maerwald[m]> euouae: does `ghci-8.6.5` work?
09:07:59 <euouae> No
09:08:20 <maerwald[m]> euouae: are you sure ghcup installed GHC successfully?
09:08:37 <maerwald[m]> can you run: source ~/.ghcup/env
09:09:16 <euouae> No such file
09:09:23 sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
09:09:52 <maerwald[m]> euouae: export PATH="$HOME/.ghcup/bin:$PATH"
09:10:20 <euouae> Yeah that worked as far as invoking ghci
09:10:55 <euouae> Was I supposed to run `cabal user-config` or something like that?
09:11:31 × azeem quits (~azeem@dynamic-adsl-78-13-247-121.clienti.tiscali.it) (Ping timeout: 258 seconds)
09:11:35 × jneira_ quits (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Quit: Ping timeout (120 seconds))
09:11:50 <euouae> OK the cabal repl command also worked. Wew. That was a lot
09:12:19 <maerwald[m]> so the resolution error is caused by `hashable <1.3`, which further restricts the base version
09:12:20 azeem joins (~azeem@176.200.225.165)
09:12:49 <maerwald[m]> you could try: `cabal repl --allow-newer=hashable --build-depends reactive-banana`
09:13:02 <euouae> That's a cool trick but I'ma already running it in the older ghc version
09:13:21 <euouae> but now I'm noticing that doing `:load ./doc/examples/Counter.hs` still gives me an issue with running `main`
09:13:25 <euouae> it's not exported? I don't understand
09:13:52 <euouae> I can still see `main:Main.main :: IO ()` if I `:browse Main` but that's about it
09:14:26 <maerwald[m]> euouae: the module is missing the first line `module Main where`
09:14:34 <maerwald[m]> it's sort of a cabal bug
09:15:01 <euouae> OK so it was the cabal bug I mentioned
09:15:10 <euouae> sigh ... nothing works today
09:15:54 <__monty__> Declaring the module's name is a best practice though. That way you can add export lists.
09:17:47 <euouae> Best practice is never getting out of bed
09:17:56 <euouae> just stay there where it's safe from bgus
09:17:57 <euouae> bugs
09:18:07 × azeem quits (~azeem@176.200.225.165) (Read error: Connection reset by peer)
09:18:38 <tomsmeding> pretty sure physicians wouldn't advise never getting out of bed ;)
09:19:54 euouae gives up on reactive-banana for now and watches the hedgehog videos instead
09:20:02 <tomsmeding> rip
09:20:03 azeem joins (~azeem@dynamic-adsl-78-13-247-121.clienti.tiscali.it)
09:20:16 <euouae> I'm actually going to contact the author of the module to tell them about some of the issues
09:20:35 <maerwald[m]> also, I think I found a bug... `cabal repl --allow-newer=base --build-depends reactive-banana` starts a repl, but there's no reactive-banana exposed
09:20:51 <euouae> whose bug?
09:21:23 tomsmeding wonders what --allow-newer=base is supposed to do
09:21:39 <maerwald[m]> fix the resolution error
09:21:59 <tomsmeding> oh right I got the constraints the other way around again
09:22:51 <tomsmeding> interesting
09:22:58 <maerwald[m]> reproducible?
09:22:59 <tomsmeding> looks like odd cabal behaviour
09:23:00 <tomsmeding> yeah
09:23:12 <maerwald[m]> can you file a bug?
09:23:13 <tomsmeding> "Warning: no exposed modules"
09:23:13 <Drew[m]1> maerwald[m]: yep
09:23:23 <tomsmeding> I can try :)
09:23:26 <Drew[m]1> Getting the same result here
09:23:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
09:24:17 <tomsmeding> the library in question doesn't matter, `cabal repl -b containers --allow-newer=base` has the same behaviour for me
09:25:19 euouae hi-fives maerwald[m]
09:26:03 <euouae> not sure if it counts as team effort, maybe more like cheering by the waysides
09:26:26 <tomsmeding> okay containers is a bad example apparently because that's loaded even if you don't specify a -b
09:26:30 <tomsmeding> parsec does have the same behaviour
09:26:37 <tomsmeding> (same = faulty)
09:27:00 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
09:27:08 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
09:27:10 <tomsmeding> https://github.com/haskell/cabal/issues/7081
09:27:24 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
09:29:30 <tomsmeding> apparently the conclusion by phadej is: this is a result of past hacks that have bitrotted, and properly fixing it is difficult; it may or may not become less difficult after a planned future rewrite of some things
09:29:46 <tomsmeding> maerwald[m]: yay comment
09:30:53 <euouae> So we went from no module name bug to -b --allow-newer bug
09:31:05 <euouae> I'm tired...
09:31:37 <maerwald[m]> could try stack, but then you'll probably be editing stack.yaml with random lines until you get a circular dependency error
09:31:53 <euouae> hehe
09:32:26 <euouae> IS there some normal order of learning Haskell?
09:32:49 <euouae> Both reactive-banana and Hedgehog seem hard to learn
09:32:49 <Drew[m]1> Would this be an issue if the dependency was specified by a cabal file instead of a `cabal repl` argument?
09:33:31 <tomsmeding> no, this is completely a problem with repl + -b
09:34:08 retro_ joins (~retro@5ec19a54.skybroadband.com)
09:37:52 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 256 seconds)
09:37:58 <Drew[m]1> <euouae> "IS there some normal order of..." <- There are several well regarded text books and courses with a good order of topics
09:37:58 × retroid_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 258 seconds)
09:38:28 <Drew[m]1> Maybe check out the progression section here: https://github.com/system-f/fp-course
09:38:43 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
09:39:39 <Drew[m]1> As for well regarded books:
09:39:41 <Drew[m]1> https://haskellbook.com/
09:39:44 <Drew[m]1> https://www.manning.com/books/get-programming-with-haskell
09:40:28 lavaman joins (~lavaman@98.38.249.169)
09:42:02 <sm> @where books
09:42:03 <lambdabot> https://www.extrema.is/articles/haskell-books, see also @where LYAH, RWH, YAHT, SOE, HR, PIH, TFwH, wikibook, PCPH, HPFFP, HTAC, TwT, FoP, PFAD, WYAH, non-haskell-books
09:43:45 × peterhil quits (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Read error: Connection reset by peer)
09:43:56 phma_ joins (phma@2001:5b0:210f:5478:d01b:a8f6:5c4b:b741)
09:44:17 × xlei quits (znc@pool-68-129-84-118.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
09:45:02 tabemann_ joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
09:45:03 peterhil joins (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
09:45:04 × tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Read error: Connection reset by peer)
09:45:07 × dfordvm quits (~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (Ping timeout: 245 seconds)
09:45:14 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
09:45:32 × anderson quits (~ande@134.209.221.71) (Ping timeout: 245 seconds)
09:45:33 dfordvm joins (~dfordivam@tk2-219-19469.vs.sakura.ne.jp)
09:45:48 × mcfilib quits (sid302703@user/mcfilib) (Ping timeout: 256 seconds)
09:45:50 × kaizen quits (sid501599@id-501599.brockwell.irccloud.com) (Ping timeout: 272 seconds)
09:45:56 mcfilib joins (sid302703@user/mcfilib)
09:45:57 × mattil quits (~mattilinn@87-92-149-13.rev.dnainternet.fi) (Read error: Connection reset by peer)
09:45:57 × derelict quits (~derelict@user/derelict) (Ping timeout: 245 seconds)
09:45:57 × poljar1 quits (~poljar@93-139-4-196.adsl.net.t-com.hr) (Read error: Connection reset by peer)
09:46:11 × hook54321 quits (sid149355@user/hook54321) (Ping timeout: 252 seconds)
09:46:15 mattil joins (~mattilinn@87-92-149-13.rev.dnainternet.fi)
09:46:16 poljar1 joins (~poljar@93-139-4-196.adsl.net.t-com.hr)
09:46:22 × son0p quits (~ff@181.136.122.143) (Ping timeout: 245 seconds)
09:46:22 × EvanR quits (~evan@user/evanr) (Ping timeout: 245 seconds)
09:46:22 × piele_ quits (~piele@tbonesteak.creativeserver.net) (Ping timeout: 245 seconds)
09:46:24 <euouae> I don't see the Haskel book covering template haskell
09:46:25 <euouae> for example
09:46:28 × integral quits (sid296274@user/integral) (Ping timeout: 272 seconds)
09:46:28 × mustafa quits (sid502723@rockylinux/releng/mustafa) (Ping timeout: 272 seconds)
09:46:47 × eco_ quits (~ubuntu@ec2-54-201-230-197.us-west-2.compute.amazonaws.com) (Ping timeout: 245 seconds)
09:46:51 kaizen joins (sid501599@id-501599.brockwell.irccloud.com)
09:46:53 × Pent quits (sid313808@id-313808.tooting.irccloud.com) (Ping timeout: 250 seconds)
09:46:53 × bjs quits (sid190364@user/bjs) (Ping timeout: 250 seconds)
09:46:56 × dajoer quits (~david@user/gvx) (Ping timeout: 256 seconds)
09:47:12 × mjrosenb_ quits (~mrosenbe@104.225.243.2) (Ping timeout: 245 seconds)
09:47:14 × hugo quits (znc@verdigris.lysator.liu.se) (Quit: ZNC 1.7.5 - https://znc.in)
09:47:15 <sm> and there's this: https://gist.github.com/graninas/833a9ff306338aefec7e543100c16ea1
09:47:17 × SethTisue__ quits (sid14912@id-14912.charlton.irccloud.com) (Ping timeout: 252 seconds)
09:47:17 × Athas quits (athas@sigkill.dk) (Ping timeout: 252 seconds)
09:47:18 × cbarrett quits (sid192934@id-192934.brockwell.irccloud.com) (Ping timeout: 250 seconds)
09:47:19 derelict joins (~derelict@user/derelict)
09:47:30 × shachaf quits (~shachaf@user/shachaf) (Ping timeout: 256 seconds)
09:47:30 × ski quits (~ski@remote12.chalmers.se) (Ping timeout: 256 seconds)
09:47:30 × stefan-_ quits (~cri@42dots.de) (Ping timeout: 256 seconds)
09:47:30 × elcaro quits (~anonymous@45.32.191.75) (Ping timeout: 256 seconds)
09:47:37 × phma quits (phma@2001:5b0:210f:5478:d01b:a8f6:5c4b:b741) (Ping timeout: 245 seconds)
09:47:37 × mcglk quits (~mcglk@131.191.49.120) (Ping timeout: 245 seconds)
09:47:37 × Taneb quits (~Taneb@runciman.hacksoc.org) (Ping timeout: 245 seconds)
09:47:44 <sm> and this: https://www.fpcomplete.com/haskell/learn/
09:47:44 × lightandlight quits (sid135476@id-135476.brockwell.irccloud.com) (Ping timeout: 272 seconds)
09:47:44 × glowcoil quits (sid3405@tinside.irccloud.com) (Ping timeout: 250 seconds)
09:47:50 Taneb joins (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0)
09:47:50 × tritlo quits (sid58727@user/tritlo) (Ping timeout: 252 seconds)
09:47:50 × gonz__ quits (sid304396@id-304396.tooting.irccloud.com) (Ping timeout: 252 seconds)
09:48:03 <sm> there's no one normal path, there are many. And there's no one reference that links to everything
09:48:10 × grfn quits (sid449115@id-449115.brockwell.irccloud.com) (Ping timeout: 250 seconds)
09:48:16 Pent joins (sid313808@id-313808.tooting.irccloud.com)
09:48:18 Athas joins (athas@2a01:7c8:aaac:1cf:92c9:1e49:a17c:2d03)
09:48:21 <sm> except that books site, which is awesome (for books)
09:48:22 × gaze___ quits (sid387101@id-387101.brockwell.irccloud.com) (Ping timeout: 272 seconds)
09:48:22 × Adeon quits (sid418992@id-418992.tooting.irccloud.com) (Ping timeout: 272 seconds)
09:48:22 × sa1 quits (sid7690@id-7690.charlton.irccloud.com) (Ping timeout: 272 seconds)
09:48:22 × totbwf__ quits (sid402332@id-402332.highgate.irccloud.com) (Ping timeout: 272 seconds)
09:48:30 eco joins (~ubuntu@ec2-54-201-230-197.us-west-2.compute.amazonaws.com)
09:48:33 dajoer joins (~david@user/gvx)
09:48:38 × exarkun quits (~exarkun@user/exarkun) (Ping timeout: 256 seconds)
09:48:40 mustafa joins (sid502723@rockylinux/releng/mustafa)
09:48:56 × lambdap quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Ping timeout: 252 seconds)
09:49:00 × supersven quits (uid501114@id-501114.charlton.irccloud.com) (Ping timeout: 272 seconds)
09:49:01 glowcoil joins (sid3405@id-3405.tinside.irccloud.com)
09:49:21 shachaf joins (~shachaf@user/shachaf)
09:49:25 exarkun joins (~exarkun@user/exarkun)
09:49:28 × Firedancer quits (sid336191@id-336191.stonehaven.irccloud.com) (Ping timeout: 250 seconds)
09:49:29 × bradparker quits (sid262931@id-262931.highgate.irccloud.com) (Ping timeout: 252 seconds)
09:49:29 × energizer quits (~energizer@user/energizer) (Ping timeout: 252 seconds)
09:49:29 × canta quits (~canta@user/canta) (Ping timeout: 252 seconds)
09:49:30 xlei joins (znc@pool-68-129-84-118.nycmny.fios.verizon.net)
09:49:37 Firedancer joins (sid336191@id-336191.stonehaven.irccloud.com)
09:49:37 SethTisue__ joins (sid14912@id-14912.charlton.irccloud.com)
09:49:37 gaze___ joins (sid387101@id-387101.brockwell.irccloud.com)
09:49:38 × tapas quits (sid467876@id-467876.charlton.irccloud.com) (Ping timeout: 272 seconds)
09:49:38 × gmc quits (sid58314@id-58314.charlton.irccloud.com) (Ping timeout: 272 seconds)
09:49:39 hugo joins (znc@verdigris.lysator.liu.se)
09:49:51 × teddyc quits (theodorc@cassarossa.samfundet.no) (Ping timeout: 258 seconds)
09:49:54 Adeon joins (sid418992@id-418992.tooting.irccloud.com)
09:49:55 × conjunctive quits (sid433686@id-433686.brockwell.irccloud.com) (Ping timeout: 250 seconds)
09:50:03 conjunctive joins (sid433686@id-433686.brockwell.irccloud.com)
09:50:07 × emergence quits (~emergence@vm0.max-p.me) (Ping timeout: 245 seconds)
09:50:16 × kaychaks__ quits (sid236345@id-236345.brockwell.irccloud.com) (Ping timeout: 272 seconds)
09:50:22 totbwf__ joins (sid402332@id-402332.highgate.irccloud.com)
09:50:28 bradparker joins (sid262931@id-262931.highgate.irccloud.com)
09:50:32 × mrianbloom quits (sid350277@id-350277.charlton.irccloud.com) (Ping timeout: 245 seconds)
09:50:34 canta joins (~canta@user/canta)
09:50:35 × L29Ah quits (~L29Ah@user/l29ah) (Ping timeout: 252 seconds)
09:50:46 × dsal quits (sid13060@id-13060.tooting.irccloud.com) (Ping timeout: 250 seconds)
09:50:54 × obviyus quits (sid415299@user/obviyus) (Ping timeout: 272 seconds)
09:50:54 × ephemient quits (uid407513@id-407513.tooting.irccloud.com) (Ping timeout: 256 seconds)
09:50:57 × raoul quits (~raoul@95.179.203.88) (Ping timeout: 245 seconds)
09:51:02 bjs joins (sid190364@user/bjs)
09:51:08 × tnks quits (sid412124@id-412124.brockwell.irccloud.com) (Ping timeout: 252 seconds)
09:51:08 × rubin55_ quits (sid175221@id-175221.stonehaven.irccloud.com) (Ping timeout: 252 seconds)
09:51:24 kaychaks__ joins (sid236345@id-236345.brockwell.irccloud.com)
09:51:41 × hrdl quits (~hrdl@mail.hrdl.eu) (Ping timeout: 252 seconds)
09:52:05 × PotatoGim quits (sid99505@id-99505.tooting.irccloud.com) (Ping timeout: 250 seconds)
09:52:05 × idnar quits (sid12240@debian/mithrandi) (Ping timeout: 250 seconds)
09:52:09 <sm> don't neglect the GHC User Guide, and base's haddocks, also
09:52:10 × feepo quits (sid28508@id-28508.brockwell.irccloud.com) (Ping timeout: 272 seconds)
09:52:10 × S11001001 quits (sid42510@id-42510.charlton.irccloud.com) (Ping timeout: 272 seconds)
09:52:12 × opqdonut_ quits (opqdonut@pseudo.fixme.fi) (Ping timeout: 245 seconds)
09:52:14 × ziman quits (~ziman@user/ziman) (Ping timeout: 252 seconds)
09:52:14 × Katarushisu quits (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Ping timeout: 252 seconds)
09:52:19 <euouae> yeah base has nice haddocks
09:52:30 × edwardk quits (sid47016@haskell/developer/edwardk) (Ping timeout: 250 seconds)
09:52:36 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 256 seconds)
09:52:48 × ProofTechnique quits (sid79547@id-79547.charlton.irccloud.com) (Ping timeout: 272 seconds)
09:52:56 <Drew[m]1> Nor your build tool user guide!
09:52:59 <sm> the Prelude module, anyway
09:53:26 × jonrh quits (sid5185@id-5185.charlton.irccloud.com) (Ping timeout: 272 seconds)
09:53:33 <sm> Drew: agreed
09:53:37 mcglk joins (~mcglk@131.191.49.120)
09:53:44 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 256 seconds)
09:54:04 × iphy quits (sid67735@id-67735.tooting.irccloud.com) (Ping timeout: 272 seconds)
09:54:23 <sm> someone should make a real up to date reading list
09:54:26 <maerwald[m]> just don't use `cabal --help`, lol
09:54:41 <sm> and then we'd see just how much crap there is to learn :)
09:54:42 × Natch quits (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 245 seconds)
09:54:52 × enemeth79 quits (sid309041@id-309041.tooting.irccloud.com) (Ping timeout: 256 seconds)
09:55:32 × cfebs quits (~cfebs@user/cfebs) (Ping timeout: 252 seconds)
09:55:38 <__monty__> Careful, that sounds like you're inviting mockery along the lines of "Wanted to learn Haskell, got linked this list of 1000+ papers."
09:56:15 <sm> well, awareness and admitting we have a problem is the first step :)
09:56:19 phma_ is now known as phma
09:56:42 <maerwald[m]> don't worry, dependent types and linear types are coming to the rescue to make Haskell easier to learn
09:56:45 sm is talking about essential reading in order of practicality, not unlimited research topics
09:57:16 × taktoa[c] quits (sid282096@tinside.irccloud.com) (Ping timeout: 250 seconds)
09:57:44 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Ping timeout: 252 seconds)
09:58:12 <sm> perhaps we could persuade Travis Cardwell to expand his books app ? to include other doc types, rating, and sorting ?
09:58:16 × bens quits (~bens@www.typius.com) (Ping timeout: 256 seconds)
09:58:39 <sm> I think he intends a dedicated site.. he's probably working on it
09:58:50 × Nahra quits (~user@static.161.95.99.88.clients.your-server.de) (Ping timeout: 256 seconds)
09:59:42 × forell quits (~forell@user/forell) (Ping timeout: 245 seconds)
10:00:32 × m1dnight quits (~christoph@188.ip-51-91-158.eu) (Ping timeout: 245 seconds)
10:00:33 lightandlight joins (sid135476@id-135476.brockwell.irccloud.com)
10:00:41 grfn joins (sid449115@id-449115.brockwell.irccloud.com)
10:00:41 ProofTechnique joins (sid79547@id-79547.charlton.irccloud.com)
10:01:00 m1dnight joins (~christoph@188.ip-51-91-158.eu)
10:01:05 obviyus joins (sid415299@user/obviyus)
10:01:20 jonrh joins (sid5185@id-5185.charlton.irccloud.com)
10:01:24 tnks joins (sid412124@id-412124.brockwell.irccloud.com)
10:01:27 enemeth79 joins (sid309041@id-309041.tooting.irccloud.com)
10:01:29 idnar joins (sid12240@debian/mithrandi)
10:01:33 edwardk joins (sid47016@haskell/developer/edwardk)
10:01:38 sa1 joins (sid7690@id-7690.charlton.irccloud.com)
10:01:42 feepo joins (sid28508@id-28508.brockwell.irccloud.com)
10:01:46 iphy joins (sid67735@id-67735.tooting.irccloud.com)
10:01:47 × pe200012 quits (~pe200012@113.105.10.33) (Ping timeout: 245 seconds)
10:01:53 pe200012_ joins (~pe200012@218.107.49.28)
10:01:53 S11001001 joins (sid42510@id-42510.charlton.irccloud.com)
10:01:54 taktoa[c] joins (sid282096@id-282096.tinside.irccloud.com)
10:02:03 PotatoGim joins (sid99505@id-99505.tooting.irccloud.com)
10:02:10 integral joins (sid296274@user/integral)
10:02:14 × mikolaj quits (~mikon@duch.mimuw.edu.pl) (Ping timeout: 256 seconds)
10:02:27 mikolaj joins (~mikon@duch.mimuw.edu.pl)
10:02:52 ski joins (~ski@remote12.chalmers.se)
10:04:20 rubin55_ joins (sid175221@id-175221.stonehaven.irccloud.com)
10:04:24 opqdonut joins (opqdonut@pseudo.fixme.fi)
10:04:26 emergence joins (~emergence@vm0.max-p.me)
10:04:38 mrianbloom joins (sid350277@id-350277.charlton.irccloud.com)
10:04:42 × ptrcmd quits (~ptrcmd@user/ptrcmd) (Ping timeout: 245 seconds)
10:05:03 ziman joins (~ziman@c25-5.condornet.sk)
10:05:07 × ft quits (~ft@shell.chaostreff-dortmund.de) (Ping timeout: 245 seconds)
10:05:09 gonz__ joins (sid304396@id-304396.tooting.irccloud.com)
10:05:11 × hgolden_ quits (~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Ping timeout: 258 seconds)
10:05:20 lambdabot joins (~lambdabot@silicon.int-e.eu)
10:05:20 × lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host)
10:05:20 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
10:05:32 stefan-_ joins (~cri@42dots.de)
10:05:45 <euouae> heh hedgehog sure is cool though
10:05:51 tritlo joins (sid58727@user/tritlo)
10:05:55 hrdl joins (~hrdl@mail.hrdl.eu)
10:05:56 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:06:01 <euouae> I wrote a faulty unit test and it caught it quickly and showed me a minimal example
10:06:06 forell joins (~forell@user/forell)
10:06:11 <euouae> (faulty unit test meaning I wrote a property that doesn't actually hold)
10:06:14 hook54321 joins (sid149355@user/hook54321)
10:06:21 gmc joins (sid58314@id-58314.charlton.irccloud.com)
10:06:21 dsal joins (sid13060@id-13060.tooting.irccloud.com)
10:06:25 supersven joins (uid501114@id-501114.charlton.irccloud.com)
10:06:28 <sm> \o/
10:06:32 <tomsmeding> that's the promise of property testing :)
10:06:47 ephemient joins (uid407513@id-407513.tooting.irccloud.com)
10:07:03 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
10:07:04 ft joins (~ft@shell.chaostreff-dortmund.de)
10:07:36 cbarrett joins (sid192934@id-192934.brockwell.irccloud.com)
10:07:50 anderson joins (~ande@134.209.221.71)
10:08:02 × taktoa[c] quits (sid282096@id-282096.tinside.irccloud.com) (Ping timeout: 245 seconds)
10:08:02 × johnw quits (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Ping timeout: 245 seconds)
10:08:14 cfebs joins (~cfebs@user/cfebs)
10:08:27 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 245 seconds)
10:08:48 <euouae> no wait! It even caught a real bug in my code!
10:09:30 piele joins (~piele@tbonesteak.creativeserver.net)
10:10:02 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
10:10:10 × ozzymcduff quits (~mathieu@81-234-151-21-no94.tbcn.telia.com) (Ping timeout: 256 seconds)
10:10:15 <euouae> the original Hangman I posted had the mistake of not updating the guess-character list with a character if it was a wrong guess
10:10:20 tapas joins (sid467876@charlton.irccloud.com)
10:10:32 × PotatoGim quits (sid99505@id-99505.tooting.irccloud.com) (Ping timeout: 245 seconds)
10:10:37 <juri_> I should add property tests to my code more often. it's a bit difficult when all of your 'success cases' are corner cases.
10:10:56 taktoa[c] joins (sid282096@id-282096.tinside.irccloud.com)
10:11:14 <euouae> Oh man what a success story for me this was
10:11:32 <euouae> A simple game like Hangman and I managed to slip a bug in there and rudimentary use of Hedgehog caught it
10:11:32 EvanR joins (~evan@mail.evanr.info)
10:11:32 × EvanR quits (~evan@mail.evanr.info) (Changing host)
10:11:32 EvanR joins (~evan@user/evanr)
10:11:34 <sm> victory out of the jaws of defeat!
10:11:41 <euouae> hehe ^_^
10:11:48 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
10:11:48 × Athas quits (athas@2a01:7c8:aaac:1cf:92c9:1e49:a17c:2d03) (Remote host closed the connection)
10:12:13 elcaro joins (~anonymous@45.32.191.75)
10:12:30 × phma quits (phma@2001:5b0:210f:5478:d01b:a8f6:5c4b:b741) (Read error: Connection reset by peer)
10:12:37 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 245 seconds)
10:12:53 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
10:13:08 <euouae> https://paste.tomsmeding.com/Wln1Rbtd
10:13:19 <euouae> Here you go, my Spec.hs that caught the bug, together with the new and old version of Lib.hs (the old version contains the bug)
10:13:34 <euouae> the bug was caught by prop_repeat_guess
10:13:55 mjrosenb joins (~mrosenbe@nyc.schrodinger.com)
10:14:22 Athas joins (athas@sigkill.dk)
10:14:31 Natch joins (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se)
10:14:36 PotatoGim joins (sid99505@id-99505.tooting.irccloud.com)
10:14:42 × supersven quits (uid501114@id-501114.charlton.irccloud.com) (Ping timeout: 245 seconds)
10:14:42 × dsal quits (sid13060@id-13060.tooting.irccloud.com) (Ping timeout: 245 seconds)
10:15:36 johnw joins (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
10:16:27 teddyc joins (theodorc@cassarossa.samfundet.no)
10:16:29 supersven joins (uid501114@id-501114.charlton.irccloud.com)
10:16:54 dsal joins (sid13060@id-13060.tooting.irccloud.com)
10:17:32 <sm> euouae: have you still got the test runner output ?
10:17:37 × taktoa[c] quits (sid282096@id-282096.tinside.irccloud.com) (Ping timeout: 245 seconds)
10:17:37 × ProofTechnique quits (sid79547@id-79547.charlton.irccloud.com) (Ping timeout: 245 seconds)
10:17:40 <euouae> Yeah why?
10:18:02 <sm> I'm interested to see it
10:18:27 × jonrh quits (sid5185@id-5185.charlton.irccloud.com) (Ping timeout: 245 seconds)
10:18:52 × sa1 quits (sid7690@id-7690.charlton.irccloud.com) (Ping timeout: 245 seconds)
10:19:03 <euouae> sm: here you go, https://paste.tomsmeding.com/9hKcNTUJ
10:19:09 energizer joins (~energizer@user/energizer)
10:19:13 <euouae> Added the output as a fourth file
10:19:42 taktoa[c] joins (sid282096@id-282096.tinside.irccloud.com)
10:19:53 <sm> thanks! that's pretty great
10:19:55 ProofTechnique joins (sid79547@id-79547.charlton.irccloud.com)
10:20:37 jonrh joins (sid5185@id-5185.charlton.irccloud.com)
10:20:40 ozzymcduff joins (~mathieu@81-234-151-21-no94.tbcn.telia.com)
10:20:41 sa1 joins (sid7690@id-7690.charlton.irccloud.com)
10:20:49 <euouae> yeah I managed to catch what is probably the only bug in the code in less than 10 minutes of writing property tests
10:20:50 bens joins (~bens@www.typius.com)
10:21:01 <euouae> I'm now a believer
10:21:07 <sm> ha I bet there's more
10:21:11 <euouae> :<
10:21:34 ptrcmd joins (~ptrcmd@user/ptrcmd)
10:22:44 <tomsmeding> :t \f x -> f `flip` x
10:22:45 <lambdabot> (a -> b -> c) -> b -> a -> c
10:22:58 <tomsmeding> interesting way of writing that
10:23:02 × PotatoGim quits (sid99505@id-99505.tooting.irccloud.com) (Ping timeout: 245 seconds)
10:23:02 × Igfoo quits (~ian@matrix.chaos.earth.li) (Ping timeout: 245 seconds)
10:23:12 Igfoo joins (~ian@matrix.chaos.earth.li)
10:23:23 <tomsmeding> an alternative would be (`Lib.guessCharacter` c)
10:23:38 <tomsmeding> or, of course, let guessC g = Lib.guessCharacter g c
10:23:38 <euouae> oh nice heh
10:23:50 <tomsmeding> which is more readable IMO :)
10:23:55 <euouae> hmmmm nice
10:24:45 mei joins (~mei@user/mei)
10:24:48 PotatoGim joins (sid99505@id-99505.tooting.irccloud.com)
10:26:13 <euouae> I'll take this small victory and go home to sleep
10:26:21 <euouae> Have a good one, thanks for all the help!
10:26:32 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
10:26:34 allbery_b joins (~geekosaur@xmonad/geekosaur)
10:26:37 allbery_b is now known as geekosaur
10:26:46 × euouae quits (~euouae@user/euouae) (Quit: Client closed)
10:27:27 L29Ah joins (~L29Ah@user/l29ah)
10:34:19 × sander quits (~sander@user/sander) (Ping timeout: 258 seconds)
10:36:56 sander joins (~sander@user/sander)
10:38:35 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
10:39:35 MoC joins (~moc@user/moc)
10:45:18 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
10:45:33 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
11:00:00 × agua_pesada quits (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 258 seconds)
11:12:16 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds)
11:20:05 jumper149 joins (~jumper149@80.240.31.34)
11:20:19 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:26:49 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
11:31:46 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
11:32:32 oxide joins (~lambda@user/oxide)
11:34:22 hyiltiz joins (~quassel@31.220.5.250)
11:41:59 lavaman joins (~lavaman@98.38.249.169)
11:44:33 × mc47 quits (~mc47@xmonad/TheMC47) (Quit: Leaving)
11:46:28 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
11:51:02 × stefan-_ quits (~cri@42dots.de) (Ping timeout: 252 seconds)
11:54:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
11:55:20 stefan-_ joins (~cri@42dots.de)
12:05:15 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
12:06:54 × oxide quits (~lambda@user/oxide) (Ping timeout: 256 seconds)
12:07:12 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 245 seconds)
12:09:28 waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
12:10:42 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
12:11:50 × markpythonicbitc quits (~markpytho@2601:647:5a00:35:147a:d585:e4cc:401c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:15:46 × elias__ quits (~elias@154.27.37.188.rev.vodafone.pt) (Remote host closed the connection)
12:16:31 skykanin joins (~skykanin@115.81-166-221.customer.lyse.net)
12:17:30 cheater joins (~Username@user/cheater)
12:19:29 enoq joins (~enoq@194-208-179-35.lampert.tv)
12:19:39 × skykanin quits (~skykanin@115.81-166-221.customer.lyse.net) (Quit: WeeChat 3.2)
12:19:48 skykanin joins (~skykanin@115.81-166-221.customer.lyse.net)
12:23:56 tommd joins (~tommd@cpe-76-179-204-251.maine.res.rr.com)
12:31:05 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
12:32:12 Kugge joins (~Kugge@82-65-70-62.subs.proxad.net)
12:32:19 × ziman quits (~ziman@c25-5.condornet.sk) (Changing host)
12:32:19 ziman joins (~ziman@user/ziman)
12:32:34 berberman joins (~berberman@user/berberman)
12:33:44 × berberman_ quits (~berberman@user/berberman) (Ping timeout: 272 seconds)
12:33:45 × peterhil quits (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Ping timeout: 276 seconds)
12:34:18 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
12:39:20 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
12:42:33 favonia joins (~favonia@user/favonia)
12:42:36 gehmehgeh joins (~user@user/gehmehgeh)
12:43:14 × tommd quits (~tommd@cpe-76-179-204-251.maine.res.rr.com) (Ping timeout: 272 seconds)
12:43:28 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
12:43:52 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
12:46:37 markpythonicbitc joins (~markpytho@50.228.44.6)
12:48:33 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
12:48:35 allbery_b joins (~geekosaur@xmonad/geekosaur)
12:48:38 allbery_b is now known as geekosaur
12:48:43 × mikoto-chan quits (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Quit: mikoto-chan)
12:58:03 × Kugge quits (~Kugge@82-65-70-62.subs.proxad.net) (Quit: Lost terminal)
12:58:30 jakalx joins (~jakalx@base.jakalx.net)
13:00:22 × MQ-17J quits (~MQ-17J@8.6.144.235) (Ping timeout: 258 seconds)
13:00:38 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Read error: Connection reset by peer)
13:00:56 alx741 joins (~alx741@186.178.108.253)
13:01:18 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
13:05:46 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
13:14:33 × xff0x quits (~xff0x@2001:1a81:533f:2500:e6ab:58ee:e458:ff3a) (Ping timeout: 258 seconds)
13:15:19 xff0x joins (~xff0x@2001:1a81:533f:2500:9e0:616e:42de:43f7)
13:16:12 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
13:18:57 jakalx parts (~jakalx@base.jakalx.net) (Machine is going to sleep)
13:21:43 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
13:26:17 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
13:28:12 <lechner> srid[m]: Hi, I would like to deploy an experimental instance of emanote. Can you please help with compiling it? Thanks!
13:28:27 × jumper149 quits (~jumper149@80.240.31.34) (Ping timeout: 245 seconds)
13:28:50 henninb joins (~henninb@63-228-51-113.mpls.qwest.net)
13:29:06 jumper149 joins (~jumper149@80.240.31.34)
13:29:46 <lechner> Hi, is it possible here to use Data.SemVer.parser directly with optparse-applicative? Thanks! https://dpaste.org/cADn#L71
13:30:54 jakalx joins (~jakalx@base.jakalx.net)
13:33:43 slowButPresent joins (~slowButPr@user/slowbutpresent)
13:39:14 oxide joins (~lambda@user/oxide)
13:43:18 lavaman joins (~lavaman@98.38.249.169)
13:45:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:48:28 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
13:52:13 jneira_ joins (~jneira_@28.red-80-28-169.staticip.rima-tde.net)
13:56:55 × dajoer quits (~david@user/gvx) (Quit: leaving)
14:00:56 elf_fortrez joins (~elf_fortr@adsl-72-50-6-23.prtc.net)
14:15:55 × henninb quits (~henninb@63-228-51-113.mpls.qwest.net) (Quit: leaving)
14:24:44 euandreh joins (~euandreh@2804:14c:33:9fe5:9814:dfa2:8237:3c5c)
14:25:44 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 256 seconds)
14:26:24 meltedbrain_y2k joins (~tekserf@45.152.183.52)
14:28:07 hugo joins (znc@verdigris.lysator.liu.se)
14:30:15 lbseale joins (~lbseale@user/ep1ctetus)
14:32:28 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
14:32:57 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
14:35:34 × elf_fortrez quits (~elf_fortr@adsl-72-50-6-23.prtc.net) (Ping timeout: 246 seconds)
14:36:49 jakalx parts (~jakalx@base.jakalx.net) ()
14:36:53 son0p joins (~ff@181.136.122.143)
14:41:07 × oxide quits (~lambda@user/oxide) (Ping timeout: 250 seconds)
14:41:59 × spruit11_ quits (~quassel@2a02:a467:ccd6:1:55d2:a8d9:e00b:3a3a) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
14:42:25 spruit11 joins (~quassel@2a02:a467:ccd6:1:55d2:a8d9:e00b:3a3a)
14:42:56 oxide joins (~lambda@user/oxide)
14:47:03 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
14:48:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
14:50:06 <tromp> i posted to Hacker News about my hopefully interesting Haskell project: https://news.ycombinator.com/item?id=28107062
14:53:42 mnrmnaugh is now known as philosomnaugh
14:54:44 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:55:55 <lechner> tromp: being in a Haskell channel I briefly confused the Go game in your text with the Go language. Maybe it would be helpful to others to include the word "game" at the first mention https://github.com/tromp/ChessPositionRanking#chesspositionranking
14:58:52 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
15:00:22 <fgaz> is .stack-work the equivalent of cabal's dist[-newstyle], i.e. does it contain the local project cache among other stuff?
15:01:14 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
15:01:17 <fgaz> docs and search engines aren't helpful and I don't want to install stack just to check that...
15:01:49 <dsal> If you have a .stack-work, but no stack, someone did something dumb. :)
15:01:58 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
15:02:26 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Remote host closed the connection)
15:02:44 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
15:03:02 <fgaz> dsal: oh I don't, it's for a gitignore
15:05:30 <tomsmeding> fgaz: not sure precisely, but I _am_ sure that in a git repo for a normal Haskell project, you don't want to commit .stack-work
15:05:49 <tomsmeding> the relevant information for stack is contained in stack.yaml and, if using hpack, package.yaml
15:06:12 <tomsmeding> (and the cabal file, if not using hpack)
15:09:14 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:11:35 <lechner> Hi, what are the two types of x in those code samples, please? https://stackoverflow.com/a/55015701
15:12:10 <lechner> never mind. i'm confused
15:12:18 <dsal> fgaz: Yeah, it should be there. It's effectively a scratch directory of things that can be recreated, including build artifacts and lots of other junk.
15:12:47 <fgaz> tomsmeding dsal: thanks!
15:13:17 <tomsmeding> it can get fairly large :p
15:13:43 <Cajun> lechner: given the type signature, both are `[String]` . and by convention, anything that ends with _ disregards results and returns `()` (at least as far as im aware)
15:14:59 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:15:46 <lechner> Cajun: thanks! i was actually confused by the statement "each call to putStrLn returns a unit" but my question did not reflect that very well. What is a unit, please?
15:16:00 <tromp> thx, @lechner. changed to "game of Go"
15:16:06 <Cajun> "unit" means `()`
15:16:37 <lechner> Cajun: thank you!
15:16:38 <Cajun> idk how to use lambda bot but `:t ()` === `() :: ()`
15:17:03 <tomsmeding> :t ()
15:17:04 <lambdabot> ()
15:17:08 <Cajun> and you can see this in mapM_'s type
15:17:11 <Cajun> :t mapM_
15:17:12 <lambdabot> (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
15:17:28 <Cajun> well isnt that simple... :P
15:17:54 <tomsmeding> if confused by the Foldable, imagine t = [] so that mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
15:18:12 peterhil joins (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
15:19:02 <Cajun> and in this instance the monad is IO, so you can replace the m with IO for `(a -> IO b) -> [a] -> IO ()` or even more specifically `(String -> IO b) -> [String] -> IO ()`
15:19:22 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
15:19:27 <lechner> i was confused that anyone would use mapM (without the underscore) but then also do not understand how a list of units is different from a plain unit
15:19:54 × oxide quits (~lambda@user/oxide) (Ping timeout: 240 seconds)
15:20:01 <lechner> it's just about the signature!
15:20:03 Dumbfoundde4d joins (~Dumbfound@li480-24.members.linode.com)
15:20:13 <Cajun> sometimes you just want a list of monadic things *shrug*
15:20:25 <geekosaur> you don't normally use mapM when you're getting a list of units. but consider something that returns IO String
15:20:36 <lechner> right
15:21:00 <Cajun> but yeah `mapM` and `mapM_` function identically except with return values
15:21:01 <tomsmeding> with an imaginary 'performRequest :: Request -> IO Result', you might have 'mapM performRequests :: [Request] -> IO [Result]'
15:21:24 × cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds)
15:21:47 jakalx joins (~jakalx@base.jakalx.net)
15:22:48 zmt00 joins (~zmt00@user/zmt00)
15:23:00 <lechner> so i'm making baby steps here. is there a way to restyle mapM_ putStrLn x into something involving the >>= putStrLn operator?
15:23:25 × philosomnaugh quits (~mnrmnaugh@68.162.206.56) (Remote host closed the connection)
15:23:39 skykanin is now known as Guest4303
15:23:39 × Guest4303 quits (~skykanin@115.81-166-221.customer.lyse.net) (Killed (erbium.libera.chat (Nickname regained by services)))
15:23:50 <lechner> or is that a bogus thought
15:23:56 mnrmnaugh joins (~mnrmnaugh@68.162.206.56)
15:23:57 Guest4303 joins (~skykanin@115.81-166-221.customer.lyse.net)
15:24:39 <Cajun> yeah, heres a small example `foo = getLine >>= \line -> putStrLn line` although this can be more optimized
15:25:28 skykanin joins (~skykanin@159.84-234-142.customer.lyse.net)
15:25:39 × skykanin quits (~skykanin@159.84-234-142.customer.lyse.net) (Client Quit)
15:25:40 <Cajun> well hlint doesnt yell at me for the code so its fine lol
15:25:49 <tomsmeding> lechner: if you have 'mapM_ putStrLn x', then x is a list of strings. So somehow, you're going to have to loop over the list x
15:26:01 <tomsmeding> mapM_ does this for you; you can also do it manually
15:26:49 <tomsmeding> :t let loop [] = return () ; loop (x:xs) = putStrLn x >> loop xs in loop
15:26:50 <lambdabot> [String] -> IO ()
15:27:31 <tomsmeding> which you can express using standard functions like foldr in a number of ways :)
15:27:51 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
15:28:00 <tomsmeding> (or traverse, which happens to be the same as mapM)
15:28:42 <lechner> i see. thanks!
15:28:46 <Cajun> i was thinking of doing something with traverse until i realized `mapM` already puts the monad on the outside of the list :p
15:29:26 <tomsmeding> traverse = mapM
15:29:49 <Cajun> oh yeah.. i guess it does wind up like that huh
15:30:02 <tomsmeding> well, with different typeclass constraints, and technically traverse is implemented using the Applicative combinators whereas mapM uses the monad methods
15:30:13 <tomsmeding> but if your instances are lawful, that should be exactly the same :)
15:30:45 fendor joins (~fendor@213162073215.public.t-mobile.at)
15:30:46 <Cajun> "but if your instance are lawful" that sounds like it could be a headache and a half lol
15:30:49 <tomsmeding> also fmap = liftM
15:31:07 <Lycurgus> is there a quicklaw?
15:31:34 <tomsmeding> Lycurgus: https://hackage.haskell.org/package/tasty-quickcheck-laws
15:31:38 × euandreh quits (~euandreh@2804:14c:33:9fe5:9814:dfa2:8237:3c5c) (Quit: WeeChat 3.2)
15:31:44 <Lycurgus> tomsmeding, ty!
15:37:37 deadletter[m] is now known as stoicswe[m]
15:39:37 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:41:28 fendor_ joins (~fendor@046125250027.public.t-mobile.at)
15:43:52 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
15:43:52 × fendor quits (~fendor@213162073215.public.t-mobile.at) (Ping timeout: 245 seconds)
15:48:35 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
15:49:24 Dumbfoundde4d parts (~Dumbfound@li480-24.members.linode.com) (Later)
15:50:36 marsupilami joins (~martin@2a01:e0a:43:72e0:b22a:9a5f:889c:554b)
15:52:26 × xff0x quits (~xff0x@2001:1a81:533f:2500:9e0:616e:42de:43f7) (Ping timeout: 256 seconds)
15:53:08 xff0x joins (~xff0x@2001:1a81:533f:2500:f78f:6771:9432:cc40)
15:54:13 × marsupilami quits (~martin@2a01:e0a:43:72e0:b22a:9a5f:889c:554b) (Client Quit)
15:55:41 ubert joins (~Thunderbi@178.115.34.26.wireless.dyn.drei.com)
15:58:34 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
15:59:53 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:59:57 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
16:01:14 × ubert quits (~Thunderbi@178.115.34.26.wireless.dyn.drei.com) (Remote host closed the connection)
16:04:17 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
16:04:20 × epolanski quits (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
16:04:36 jgeerds joins (~jgeerds@55d45555.access.ecotel.net)
16:07:21 × jess quits (~jess@libera/staff/jess) ()
16:14:37 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
16:14:56 geekosaur joins (~geekosaur@xmonad/geekosaur)
16:15:32 <dsal> Oh interesting. I was using checkers for that.
16:16:42 × vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds)
16:16:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:17:38 <dsal> testApplicativeLaws :: (Applicative f, Eq a, Eq b, Eq c, Show a, Show t, Show (f a), Show (f (a -> b)), Show (f (b -> c)), Arbitrary a, Arbitrary b, Arbitrary t, Arbitrary (f a), Arbitrary (f (a -> b)), Arbitrary (f (b -> c)), CoArbitrary a, Typeable f, Typeable a, Typeable b, Typeable c) => Proxy f -> Proxy t -> Proxy a -> Proxy b -> Proxy c -> (forall u. Eq u => t -> f u -> f u -> Bool) -> TestTree
16:17:45 <dsal> Well that doesn't look significantly easier to use.
16:18:06 <dsal> (not that I ever remember how to use checkers)
16:18:59 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
16:19:57 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
16:20:08 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:22:30 × azeem quits (~azeem@dynamic-adsl-78-13-247-121.clienti.tiscali.it) (Ping timeout: 250 seconds)
16:22:52 azeem joins (~azeem@176.201.28.221)
16:24:10 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
16:25:19 econo joins (uid147250@user/econo)
16:27:11 × azeem quits (~azeem@176.201.28.221) (Read error: Connection reset by peer)
16:27:23 azeem joins (~azeem@dynamic-adsl-78-13-247-121.clienti.tiscali.it)
16:29:26 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:31:22 × azeem quits (~azeem@dynamic-adsl-78-13-247-121.clienti.tiscali.it) (Ping timeout: 240 seconds)
16:31:50 azeem joins (~azeem@176.201.28.221)
16:33:39 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:34:52 × fendor_ quits (~fendor@046125250027.public.t-mobile.at) (Remote host closed the connection)
16:35:17 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:40:07 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds)
16:40:42 × azeem quits (~azeem@176.201.28.221) (Ping timeout: 240 seconds)
16:42:25 qbt joins (~edun@user/edun)
16:42:27 × qbt quits (~edun@user/edun) (Remote host closed the connection)
16:42:30 edun joins (~edun@user/edun)
16:42:37 azeem joins (~azeem@176.201.28.221)
16:43:34 × edun quits (~edun@user/edun) (Client Quit)
16:43:53 qbt joins (~edun@user/edun)
16:47:40 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection)
16:53:54 × azeem quits (~azeem@176.201.28.221) (Ping timeout: 240 seconds)
16:55:27 azeem joins (~azeem@176.201.28.221)
16:55:28 × Vajb quits (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583) (Read error: Connection reset by peer)
16:57:33 Atum_ joins (~IRC@user/atum/x-2392232)
16:58:01 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
16:59:05 justsomeguy joins (~justsomeg@user/justsomeguy)
17:02:35 oxide joins (~lambda@user/oxide)
17:02:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:07:54 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
17:07:54 × azeem quits (~azeem@176.201.28.221) (Read error: Connection reset by peer)
17:08:18 azeem joins (~azeem@dynamic-adsl-78-13-247-121.clienti.tiscali.it)
17:09:26 machinedgod joins (~machinedg@24.105.81.50)
17:10:48 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
17:11:59 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
17:21:30 × xff0x quits (~xff0x@2001:1a81:533f:2500:f78f:6771:9432:cc40) (Ping timeout: 240 seconds)
17:22:44 xff0x joins (~xff0x@2001:1a81:533f:2500:c767:19bd:28d8:628d)
17:25:58 euandreh joins (~euandreh@2804:14c:33:9fe5:9814:dfa2:8237:3c5c)
17:26:28 <euandreh> now getting into Haskell, I get the impression that even though there exists Haskell2010 as a language specification, GHC is the de facto implementation
17:26:45 <euandreh> as many people add GHC-specific extensions to their code and libraries freely
17:27:01 <euandreh> so it feels like Haskell is actually GHC-Haskell most of the time
17:27:06 <euandreh> is this correct?
17:27:35 <opqdonut> yeah that's pretty much it
17:27:55 <opqdonut> some people do write code using the Haskell2010 subset of GHC Haskell
17:28:29 × markpythonicbitc quits (~markpytho@50.228.44.6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:28:49 <opqdonut> but in terms of libraries, you're pretty much stuck with GHC. the GHC base doesn't implement the Haskell2010 standard due to some key differences (mostly relating to the type classes Monad and Applicative)
17:29:18 <euandreh> that's interesting, I didn't know that
17:29:49 <davean> opqdonut: eh, those differences are ones you can be invariant to in a decent bit of code based on it, its just verbose
17:29:58 <c_wraith> Pretty sure the removal of Num superclasses still isn't in a Haskell standard either
17:30:30 <davean> Like, you have to throw a bunch of constraints on your function explicitely to make it work with either, but you can
17:31:18 <opqdonut> davean: nah, you need preprocessor directives if you want to implement a Monad instance
17:31:46 <opqdonut> (for both GHC and Haskell2010)
17:32:04 <c_wraith> that doesn't sound right.
17:32:19 <davean> I don't believe you, its been a bit since I did it but I think you're very wrong
17:32:24 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
17:32:24 <opqdonut> quoth the manual: You cannot write Monad instances that work for GHC and also for a Haskell 2010 implementation that does not define Applicative.
17:32:30 <opqdonut> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/bugs.html
17:32:35 <c_wraith> Right, that's true
17:32:35 <davean> *that does not define Applicative*
17:32:43 <davean> Thats a conditional
17:32:43 <opqdonut> Applicative is not in Haskell2010
17:32:47 <c_wraith> yes it is
17:32:54 <opqdonut> hmm
17:33:08 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 250 seconds)
17:33:26 <opqdonut> can't see it here: https://www.haskell.org/onlinereport/haskell2010/haskellpa2.html#x20-192000II
17:33:41 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
17:34:02 <opqdonut> this is a very minor point, but something that irked me when I realised it: it's impossible to write Haskell2010 code that's useable in the wild
17:34:34 × Patternmaster quits (~georg@li1192-118.members.linode.com) (Quit: leaving)
17:34:37 <c_wraith> Huh, guess it's not there. But still, all that means is you need to import a library that defines it
17:34:53 Patternmaster joins (~georg@li1192-118.members.linode.com)
17:34:55 <davean> opqdonut: when using Haskell2010 without an Applicative class, you can can just import a package that provides it
17:35:13 <opqdonut> davean: yes, which pretty much means preprocessor directives, like I said
17:35:29 <c_wraith> well, no. the library can still put it in a module named Control.Applicative
17:35:37 <davean> opqdonut: it does not
17:35:38 <c_wraith> no need for conditional compilation
17:35:46 × Patternmaster quits (~georg@li1192-118.members.linode.com) (Client Quit)
17:35:56 <opqdonut> ok yeah you can shunt it up to the build system level
17:36:19 <opqdonut> but you can't include that Control.Applicative source file when compiling on GHC (AFAIK)
17:36:31 <davean> ... yes you can
17:36:41 <davean> WTF are you on about
17:36:48 <davean> have you ever importated a module in Haskell before?
17:37:15 <davean> It'll usually give you a warning when using GHC, but not a problem
17:37:25 <davean> if you insist on being warning clean then we've got a few issues here, but thats it
17:37:26 <c_wraith> hell, you can name a module Prelude in your own sources. That's actually really useful sometimes.
17:37:27 Patternmaster joins (~georg@li1192-118.members.linode.com)
17:37:56 Vajb joins (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583)
17:37:59 <davean> https://hackage.haskell.org/package/base-4.15.0.0/docs/Control-Applicative.html <-- Its there in GHC
17:38:21 Sgeo joins (~Sgeo@user/sgeo)
17:38:46 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 250 seconds)
17:38:48 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:45:02 lavaman joins (~lavaman@98.38.249.169)
17:48:13 × tput quits (~tim@S0106a84e3fe54613.ed.shawcable.net) (Remote host closed the connection)
17:49:04 <opqdonut> interesting
17:49:29 <opqdonut> after some testing it seems that GHC indeed prefers my Control/Applicative.hs over the one Control.Applicative in base, I had imagined that would've been an error
17:49:49 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
17:50:26 <opqdonut> however that doesn't help in this case, since I get: Ambiguous occurrence ‘Applicative’ It could refer to either ‘Prelude.Applicative’, ... or ‘Control.Applicative.Applicative’ ...
17:50:32 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
17:51:14 <opqdonut> and even if Applicative weren't in Prelude, I think I'd run into some interop problems when I use a package that uses base's Control.Applicative while my code uses my Control.Applicative
17:51:36 <opqdonut> (this is what I mean when I said "you can't include that Control.Applicative source file when compiling on GHC")
17:54:19 <opqdonut> of course this is purely hypothetical since there's no Haskell implementation that I'd use other than GHC :)
17:54:42 × Vajb quits (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583) (Read error: Connection reset by peer)
17:54:51 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
17:57:22 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:57:22 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Client Quit)
17:57:39 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
18:02:39 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
18:03:39 pe200012 joins (~pe200012@113.105.10.33)
18:03:54 × pe200012_ quits (~pe200012@218.107.49.28) (Ping timeout: 256 seconds)
18:07:03 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
18:09:06 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 250 seconds)
18:15:57 × falsifian quits (~falsifian@exoco.falsifian.org) (Quit: Reconnecting)
18:16:04 falsifian joins (~falsifian@exoco.falsifian.org)
18:16:16 <srid[m]> lechner: Note that we have a Matrix room for Emanote/neuron - https://app.element.io/#/room/#neuron:matrix.org
18:17:23 <srid[m]> "I would like to deploy an experimental instance of emanote. Can you please help with compiling it? Thanks!" -- Nix is the recommended way to install it. Is that what you are trying? Note that I don't check this IRC often (but do check the project chat, and FP slack)
18:19:01 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
18:19:26 hendursaga joins (~weechat@user/hendursaga)
18:21:12 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:25:06 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
18:26:12 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 258 seconds)
18:26:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
18:29:07 geekosaur joins (~geekosaur@xmonad/geekosaur)
18:32:59 Pickchea joins (~private@user/pickchea)
18:42:26 Erutuon joins (~Erutuon@user/erutuon)
18:42:56 machinedgod joins (~machinedg@24.105.81.50)
18:43:47 vicfred joins (~vicfred@user/vicfred)
18:44:26 Teohehim[m] joins (~teocmatri@2001:470:69fc:105::d327)
18:46:47 × rubin55_ quits (sid175221@id-175221.stonehaven.irccloud.com) (Ping timeout: 245 seconds)
18:47:06 × acertain quits (sid470584@id-470584.stonehaven.irccloud.com) (Ping timeout: 240 seconds)
18:47:27 × tritlo quits (sid58727@user/tritlo) (Read error: Connection reset by peer)
18:47:30 × joel135 quits (sid136450@id-136450.stonehaven.irccloud.com) (Ping timeout: 276 seconds)
18:47:37 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Ping timeout: 245 seconds)
18:47:37 × astra` quits (sid289983@user/amish) (Read error: Connection reset by peer)
18:47:40 × mustafa quits (sid502723@rockylinux/releng/mustafa) (Ping timeout: 258 seconds)
18:47:54 × pjlsergeant quits (sid143467@id-143467.stonehaven.irccloud.com) (Ping timeout: 240 seconds)
18:47:54 × hamishmack quits (sid389057@id-389057.stonehaven.irccloud.com) (Ping timeout: 240 seconds)
18:48:03 × Firedancer quits (sid336191@id-336191.stonehaven.irccloud.com) (Ping timeout: 258 seconds)
18:48:18 × amir quits (sid22336@user/amir) (Ping timeout: 240 seconds)
18:49:30 × ehamberg quits (sid18208@id-18208.stonehaven.irccloud.com) (Ping timeout: 240 seconds)
18:49:40 <sm> hi srid, we wondered why you chose nix other than you like it - it seemed there are no non-haskell deps ?
18:49:44 × jakesyl quits (sid56879@id-56879.stonehaven.irccloud.com) (Read error: Connection reset by peer)
18:49:54 × SanchayanMaity quits (sid478177@id-478177.stonehaven.irccloud.com) (Ping timeout: 240 seconds)
18:50:01 <sm> why you make it a requirement for trying out this project, I mean
18:51:06 × dmj` quits (sid72307@id-72307.stonehaven.irccloud.com) (Ping timeout: 240 seconds)
18:51:22 acertain joins (sid470584@stonehaven.irccloud.com)
18:51:24 Firedancer joins (sid336191@stonehaven.irccloud.com)
18:51:46 mustafa joins (sid502723@rockylinux/releng/mustafa)
18:51:54 cheater joins (~Username@user/cheater)
18:51:57 ehamberg joins (sid18208@stonehaven.irccloud.com)
18:51:59 SanchayanMaity joins (sid478177@id-478177.stonehaven.irccloud.com)
18:52:02 joel135 joins (sid136450@id-136450.stonehaven.irccloud.com)
18:52:13 rubin55_ joins (sid175221@stonehaven.irccloud.com)
18:52:24 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
18:52:25 hamishmack joins (sid389057@id-389057.stonehaven.irccloud.com)
18:52:25 dmj` joins (sid72307@id-72307.stonehaven.irccloud.com)
18:52:37 amir joins (sid22336@user/amir)
18:52:39 jakesyl joins (sid56879@id-56879.stonehaven.irccloud.com)
18:52:40 tritlo joins (sid58727@user/tritlo)
18:52:42 pjlsergeant joins (sid143467@id-143467.stonehaven.irccloud.com)
18:52:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:52:56 astra` joins (sid289983@user/amish)
19:01:29 lavaman joins (~lavaman@98.38.249.169)
19:02:00 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
19:10:00 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
19:14:22 gehmehgeh joins (~user@user/gehmehgeh)
19:15:04 Guest4303 is now known as skykanin
19:17:34 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
19:18:37 pavonia joins (~user@user/siracusa)
19:26:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
19:32:18 × xff0x quits (~xff0x@2001:1a81:533f:2500:c767:19bd:28d8:628d) (Ping timeout: 256 seconds)
19:32:56 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
19:33:09 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
19:36:43 × skykanin quits (~skykanin@115.81-166-221.customer.lyse.net) (Quit: WeeChat 3.2)
19:43:05 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
19:43:46 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 272 seconds)
19:43:52 × alx741 quits (~alx741@186.178.108.253) (Ping timeout: 245 seconds)
19:55:04 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
19:56:47 alx741 joins (~alx741@181.196.68.21)
19:56:48 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
19:57:59 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Quit: FinnElija)
19:58:20 × Athas quits (athas@sigkill.dk) (Ping timeout: 252 seconds)
19:58:56 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
20:00:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:01:41 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
20:01:50 × mattil quits (~mattilinn@87-92-149-13.rev.dnainternet.fi) (Quit: Leaving)
20:04:40 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
20:05:06 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 240 seconds)
20:05:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
20:06:04 notzmv joins (~zmv@user/notzmv)
20:08:00 juhp joins (~juhp@128.106.188.220)
20:08:27 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 245 seconds)
20:09:44 hexfive joins (~eric@50.35.83.177)
20:10:00 × emliunix quits (~emliunix@2a09:bac0:23::815:bca) (Remote host closed the connection)
20:10:18 × hexfive quits (~eric@50.35.83.177) (Client Quit)
20:10:21 emliunix joins (~emliunix@103.138.75.119)
20:11:11 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 265 seconds)
20:13:05 xff0x joins (~xff0x@2001:1a81:533f:2500:c767:19bd:28d8:628d)
20:15:29 × Shires quits (~Shires@user/shires) (Quit: leaving)
20:15:43 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
20:15:51 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
20:16:07 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
20:16:13 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
20:17:13 xsperry joins (~as@user/xsperry)
20:17:41 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
20:17:46 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
20:18:01 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
20:24:16 × shailangsa quits (~shailangs@host86-186-142-59.range86-186.btcentralplus.com) (Ping timeout: 258 seconds)
20:24:19 kayprish joins (~kayprish@cable-188-2-229-172.dynamic.sbb.rs)
20:24:38 takuan joins (~takuan@178-116-218-225.access.telenet.be)
20:27:56 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:28:52 × mei quits (~mei@user/mei) (Ping timeout: 245 seconds)
20:31:40 × oxide quits (~lambda@user/oxide) (Ping timeout: 250 seconds)
20:32:18 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:33:00 oxide joins (~lambda@user/oxide)
20:34:57 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
20:37:18 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 250 seconds)
20:39:10 vysn joins (~vysn@user/vysn)
20:42:37 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds)
20:43:17 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
20:43:44 × enoq quits (~enoq@194-208-179-35.lampert.tv) (Quit: enoq)
20:46:42 benin03693 joins (~benin@183.82.205.178)
20:58:45 wroathe joins (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net)
21:06:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
21:07:55 × jgeerds quits (~jgeerds@55d45555.access.ecotel.net) (Remote host closed the connection)
21:10:06 <__monty__> What do you mean? There's a cabal file so you should be able to hack on it without nix?
21:16:04 jgeerds joins (~jgeerds@55d45555.access.ecotel.net)
21:16:14 <sm> __monty__: it refers to unreleased packages. Maybe nix is used to get around that
21:17:39 hendursa1 joins (~weechat@user/hendursaga)
21:19:12 <davean> sm: cabal.project does that
21:19:39 <__monty__> Yeah, maybe they forgot to check it in?
21:19:50 <__monty__> Nothing in the nix files catches my eye.
21:19:56 <sm> yes, that or a stack.yaml would make this accessible to a lot more folks
21:20:42 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
21:23:52 <__monty__> Maybe you mean the vendored dependencies in deps/?
21:24:30 <__monty__> Because it doesn't look like they're fetching any dependencies from other sources than hackage.
21:25:10 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:25:30 <__monty__> *dep/, sorry
21:25:38 fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
21:25:48 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
21:26:12 <__monty__> Would still need a cabal.project though.
21:26:32 markpythonicbitc joins (~markpytho@2601:647:5a00:35:2926:cf7f:9d4d:10a0)
21:26:49 <__monty__> If only they were using haskell.nix, then it'd be natural to get it to work with plain cabal first.
21:30:17 lavaman joins (~lavaman@98.38.249.169)
21:30:29 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
21:31:02 <sm> __monty__: where are you seeing *dep/ ?
21:32:00 <__monty__> sm: https://github.com/srid/neuron/tree/master/dep
21:32:24 <sm> oh, I'm talking about https://github.com/srid/emanote
21:32:39 Nahra joins (~user@static.161.95.99.88.clients.your-server.de)
21:36:17 <__monty__> Ah, apologies. I saw Neuron and assumed.
21:36:51 <sm> np
21:37:12 <__monty__> I guess they just prefer Nix and haven't yet had an incentive to support plain cabal/stack.
21:37:30 <sm> yup
21:38:14 × oxide quits (~lambda@user/oxide) (Quit: oxide)
21:40:02 <sm> lechner, I got it to build with this stack.yaml: https://termbin.com/tv9i
21:40:04 × vysn quits (~vysn@user/vysn) (Remote host closed the connection)
21:40:37 <sm> (& srid, in case you're interested)
21:40:42 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
21:41:32 mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr)
21:41:42 <sm> works too :-O
21:41:54 PinealGlandOptic joins (~PinealGla@37.115.210.35)
21:44:39 phma joins (~phma@host-67-44-208-203.hnremote.net)
21:47:17 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:48:29 shailangsa joins (~shailangs@host86-185-58-139.range86-185.btcentralplus.com)
21:49:10 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
21:51:15 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:53:12 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 258 seconds)
22:00:29 × mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Read error: Connection reset by peer)
22:01:45 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
22:05:10 × kayprish quits (~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Read error: Connection reset by peer)
22:05:57 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 245 seconds)
22:11:13 meltedbrain_y2k parts (~tekserf@45.152.183.52) ()
22:11:26 lavaman joins (~lavaman@98.38.249.169)
22:11:30 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
22:12:03 hendursaga joins (~weechat@user/hendursaga)
22:12:48 machinedgod joins (~machinedg@24.105.81.50)
22:13:39 jakalx joins (~jakalx@base.jakalx.net)
22:15:06 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
22:15:07 × cheater quits (~Username@user/cheater) (Ping timeout: 245 seconds)
22:18:11 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:19:27 geekosaur joins (~geekosaur@xmonad/geekosaur)
22:20:04 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
22:22:06 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
22:25:06 cheater joins (~Username@user/cheater)
22:25:26 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
22:25:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:28:49 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
22:36:50 × jgeerds quits (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 252 seconds)
22:38:59 kar1[m] is now known as kar1
22:39:44 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:41:02 × kar1 quits (~kar1matri@2001:470:69fc:105::c308) (Quit: Reconnecting)
22:41:17 kar1 joins (~kar1matri@2001:470:69fc:105::c308)
22:42:33 flouflou joins (~flouflou@modemcable032.110-177-173.mc.videotron.ca)
22:44:25 × kar1 quits (~kar1matri@2001:470:69fc:105::c308) (Client Quit)
22:44:40 kar1 joins (~kar1@2001:470:69fc:105::c308)
22:46:25 × flouflou quits (~flouflou@modemcable032.110-177-173.mc.videotron.ca) (Client Quit)
22:46:46 cjb joins (~cjb@user/cjb)
22:58:34 × sander quits (~sander@user/sander) (Ping timeout: 256 seconds)
22:59:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
23:04:48 × wroathe quits (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Ping timeout: 256 seconds)
23:08:51 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
23:08:52 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 245 seconds)
23:09:17 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
23:23:09 dajoer joins (~david@user/gvx)
23:25:27 × fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
23:28:56 × alx741 quits (~alx741@181.196.68.21) (Quit: alx741)
23:31:30 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Ping timeout: 250 seconds)
23:31:56 alx741 joins (~alx741@181.196.68.21)
23:33:31 slowButPresent joins (~slowButPr@user/slowbutpresent)
23:38:28 machinedgod joins (~machinedg@24.105.81.50)
23:39:03 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
23:39:08 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:39:27 geekosaur joins (~geekosaur@xmonad/geekosaur)
23:40:42 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
23:45:07 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
23:47:04 lavaman joins (~lavaman@98.38.249.169)
23:48:35 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
23:55:45 notzmv joins (~zmv@user/notzmv)

All times are in UTC on 2021-08-08.