2021/07/13

2021-07-13 00:00:07 +0200 <chisui> Seems bad
2021-07-13 00:00:27 +0200 <geekosaur> think of it as type level undefined, maybe?
2021-07-13 00:00:40 +0200 <boxscape> it is bad if you want to have a consistent type theory
2021-07-13 00:01:05 +0200 <boxscape> (haskell's type system isn't consistent in more than one way)
2021-07-13 00:01:20 +0200 <monochrom> Haskell is not for arguing.
2021-07-13 00:01:21 +0200 <boxscape> s/isn't consistent/is inconsistent
2021-07-13 00:01:50 +0200 <monochrom> Unpopular opinion: It is the stance "use Haskell for proofs" that is inconsistent.
2021-07-13 00:02:20 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 256 seconds)
2021-07-13 00:02:48 +0200 <maralorn> monochrom: +1
2021-07-13 00:03:35 +0200 <chisui> Well I tried to create a category implementation `data Phantom k (a :: k) (b :: k) = Phantom` and `type Empty = Phantom Void`
2021-07-13 00:03:54 +0200 <maralorn> I have been confused and slightly insecure about the Haskell typesystem for years because people kept saying it is inconsistent.
2021-07-13 00:04:04 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-07-13 00:04:37 +0200 <monochrom> The Haskell term system, type system, and kind system are very much consistent.
2021-07-13 00:05:02 +0200 <monochrom> You do lose a few axioms you would expect from other logics, yes.
2021-07-13 00:05:03 +0200 <chisui> monochrom: if you allow bottom?
2021-07-13 00:05:21 +0200 <Hecate> 👀
2021-07-13 00:07:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 00:07:44 +0200 <monochrom> You should still feel insecure that you can still make a mistake of non-termination in Haskell, yes.
2021-07-13 00:08:10 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-07-13 00:08:47 +0200 <monochrom> But looking at how C programmers don't really feel insecure with even less safety nets, I would say "take it easy".
2021-07-13 00:08:57 +0200rostero(uid236576@id-236576.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-13 00:10:08 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-07-13 00:10:36 +0200 <chisui> Well I like type systems where you can't write `unsafeCoerce`
2021-07-13 00:10:40 +0200 <monochrom> My opinion on ensuring termination and doing so ergonomically is still with: don't do it with types, do it with an extra static analysis tool.
2021-07-13 00:11:37 +0200 <monochrom> I can change my opinion when I see an ergonomic dependently typed language. I don't think Agda etc have achieved it.
2021-07-13 00:13:43 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:6d00:2ab2:6519:235b)
2021-07-13 00:13:46 +0200alx741(~alx741@186.178.108.22)
2021-07-13 00:14:13 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:6d00:2ab2:6519:235b) (Remote host closed the connection)
2021-07-13 00:14:22 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:6d00:2ab2:6519:235b)
2021-07-13 00:18:03 +0200sheepduck(~sheepduck@user/sheepduck)
2021-07-13 00:18:21 +0200 <chisui> monochrom: You are completely right. Nevertheless I was stumped by this. I mean GHC even warned my that this would be an issue.
2021-07-13 00:18:33 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Remote host closed the connection)
2021-07-13 00:18:47 +0200hololeap(~hololeap@user/hololeap)
2021-07-13 00:22:44 +0200Atum_(IRC@user/atum/x-2392232) (Quit: Atum_)
2021-07-13 00:23:36 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-07-13 00:24:04 +0200hololeap(~hololeap@user/hololeap)
2021-07-13 00:24:11 +0200dudek(~dudek@185.150.236.155) (Quit: Leaving)
2021-07-13 00:25:23 +0200 <maralorn> chisui: I am not convinced that unsafeCoerce is even a property of the typesystem.
2021-07-13 00:27:13 +0200 <geekosaur> I see it as a property of the language to evade the typesystem
2021-07-13 00:29:46 +0200 <boxscape> Well, if your typesystem is logically inconsistent (like haskell's), that means it allows you to construct a function of type `forall a b . a -> b`, at least. Though whether it allows you to construct a function that behaves like unsafeCoerce is a different matter
2021-07-13 00:33:46 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-07-13 00:33:55 +0200dfg(dfg@2600:3c00::f03c:92ff:feb4:be75) (Changing host)
2021-07-13 00:33:55 +0200dfg(dfg@user/dfg)
2021-07-13 00:34:37 +0200chomwitt(~Pitsikoko@2a02:587:dc04:e00:12c3:7bff:fe6d:d374)
2021-07-13 00:38:15 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!)
2021-07-13 00:40:05 +0200warnz(~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452)
2021-07-13 00:41:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-13 00:43:24 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-07-13 00:43:47 +0200chisui(~chisui@200116b8667bfd006d48966f94785d9f.dip.versatel-1u1.de) (Quit: Client closed)
2021-07-13 00:44:06 +0200son0p(~ff@181.136.122.143) (Remote host closed the connection)
2021-07-13 00:44:30 +0200Core8687(~Core8687@2804:14c:8793:8e2f:c580:1df5:d4d4:84b3) (Ping timeout: 272 seconds)
2021-07-13 00:44:33 +0200warnz(~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452) (Ping timeout: 255 seconds)
2021-07-13 00:46:05 +0200 <monochrom> @quote monochrom unsafeCoerce
2021-07-13 00:46:05 +0200 <lambdabot> monochrom says: isTrue = (unsafeCoerce :: Either a b -> Bool) . (unsafeCoerce :: Maybe c -> Either a b) . (unsafeCoerce :: Bool -> Maybe c)
2021-07-13 00:47:04 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
2021-07-13 00:47:16 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-13 00:52:39 +0200 <Guest25> how efficient is Foreign.Storable.peek? like say I have a Ptr Int and need the value multiple times, should I call (peek ptr) each time or store the value as a Haskell Int on the first call?
2021-07-13 00:52:56 +0200 <Guest25> (doing some FFI stuff or I wouldn't be dealing with Ptrs manually)
2021-07-13 00:54:18 +0200 <geekosaur> reasonably efficient but it'll still do the peek each time instead of optimizing it down via CSE. then again if this matters to performance you're arguably making a mistake somewhere else
2021-07-13 00:55:47 +0200 <Guest25> cool thanks!
2021-07-13 00:55:52 +0200 <Guest25> and yeah, it probably won't matter
2021-07-13 00:56:58 +0200 <hololeap> with optparse-applicative, I want to use a specific configuration if no options are passed to the command line. how can I do this?
2021-07-13 00:58:27 +0200 <monochrom> I think I specified default values for every option.
2021-07-13 00:58:57 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 255 seconds)
2021-07-13 00:59:27 +0200 <hpc> it's also Alternative, so maybe you can have options <|> defaultOptions
2021-07-13 01:01:23 +0200 <hololeap> hpc, that's what I was thinking but I haven't used the library enough to have an intuition for how it works
2021-07-13 01:03:04 +0200 <hpc> it's pretty much like any other parser's Alternative, but you don't have to worry about using try to not consume input
2021-07-13 01:04:39 +0200 <monochrom> https://github.com/treblacy/random-read/blob/eb89d291e687b72269c30d2a2903cd26cf8f6f73/random-read.hs is how I did it with every option having "<> value mydefaultforthis"
2021-07-13 01:04:46 +0200phaazon(~phaazon@2001:41d0:a:fe76::1)
2021-07-13 01:04:57 +0200 <hololeap> so, when does it fail (in the Alternative sense)? when options are given out-of-order? when they are not given?
2021-07-13 01:05:48 +0200 <hpc> whenever the parser would error out normally
2021-07-13 01:05:57 +0200 <hpc> if the program would bail out with help text, instead try this other parser
2021-07-13 01:06:18 +0200 <hololeap> hm, it sounds like I'll just have to play around with it until I build an intuition for it
2021-07-13 01:07:23 +0200 <geekosaur> sounds to me like it would work best if there's otherwise at least one required option
2021-07-13 01:08:34 +0200 <hpc> yeah, but if the program would do the right thing in that case problem solved :D
2021-07-13 01:08:50 +0200 <hpc> who even needs the alternate parser at that point
2021-07-13 01:09:43 +0200 <hpc> hololeap: if it helps, normally the Alternative instance is so you can do things like "foo --create --name=foo" vs "foo --delete --id=12345"
2021-07-13 01:10:57 +0200 <hpc> data FooAction = Create String | Delete Int | Version | Help | etc etc
2021-07-13 01:11:22 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-13 01:18:25 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:6d00:2ab2:6519:235b) (Remote host closed the connection)
2021-07-13 01:19:08 +0200caubert(~caubert@136.244.111.235) (Quit: WeeChat 3.1)
2021-07-13 01:19:20 +0200caubert(~caubert@136.244.111.235)
2021-07-13 01:19:58 +0200acidjnk(~acidjnk@p200300d0c72b95096d4cdcac61b6b349.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-07-13 01:22:03 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 276 seconds)
2021-07-13 01:25:16 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
2021-07-13 01:25:37 +0200cjb(~cjb@user/cjb)
2021-07-13 01:27:53 +0200ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2021-07-13 01:29:33 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 255 seconds)
2021-07-13 01:29:36 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Ping timeout: 256 seconds)
2021-07-13 01:32:49 +0200zmt01(~zmt00@user/zmt00)
2021-07-13 01:35:16 +0200zmt00(~zmt00@user/zmt00) (Ping timeout: 256 seconds)
2021-07-13 01:39:00 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 255 seconds)
2021-07-13 01:40:01 +0200dre_(~dre@2001:8003:c932:c301:44a6:1427:4d7d:b99a)
2021-07-13 01:42:04 +0200Raugh(~mike@174.127.249.180)
2021-07-13 01:42:52 +0200dre_dre
2021-07-13 01:43:08 +0200 <Raugh> I'm trying to use Database.PostgreSQL.Simple with queries read from a file but I can't figure out how to go from [Char] to Query. The docs say to use overloaded strings and construct the Queries in place but I'm reading them from a file
2021-07-13 01:48:23 +0200 <geekosaur> https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/src/Database.PostgreSQL.Simple.Ty…
2021-07-13 01:48:30 +0200 <geekosaur> evil hack, but.
2021-07-13 01:48:45 +0200 <Axman6> @hoodle IsString
2021-07-13 01:48:45 +0200 <lambdabot> Data.String class IsString a
2021-07-13 01:48:45 +0200 <lambdabot> GHC.Exts class IsString a
2021-07-13 01:48:45 +0200 <lambdabot> Distribution.Compat.Prelude.Internal class IsString a
2021-07-13 01:48:52 +0200 <geekosaur> (you're defeating its intended type safety)
2021-07-13 01:49:01 +0200 <Axman6> @hoogle fromString
2021-07-13 01:49:01 +0200 <lambdabot> Data.String fromString :: IsString a => String -> a
2021-07-13 01:49:01 +0200 <lambdabot> GHC.Exts fromString :: IsString a => String -> a
2021-07-13 01:49:01 +0200 <lambdabot> Data.Text.Internal.Builder fromString :: String -> Builder
2021-07-13 01:49:42 +0200 <AWizzArd> Raugh: the `Query` constructor takes a ByteString. You could try let q = Query (BS.pack "SELECT from file")
2021-07-13 01:50:15 +0200 <AWizzArd> Raugh: possibly you can read it directly as ByteString from the file.
2021-07-13 01:50:46 +0200 <AWizzArd> I am doing something similar. I read strings as BS from Postgres actually. I have queries stored in there. I retrieve them and then run them.
2021-07-13 01:52:39 +0200 <Axman6> Isn't that what stored procedures are for?
2021-07-13 01:52:48 +0200 <Raugh> interesting, ok, trying each method. Its not escaping a substituted table name correct for me either and I'm realizing it might not be set up to run multiple statements at once out of the box so I think I have a bit of digging to do
2021-07-13 01:53:05 +0200 <hololeap> how would I make a --help option with optparse-applicative?
2021-07-13 01:53:13 +0200 <Axman6> no, it almost certainly isn't
2021-07-13 01:53:14 +0200 <AWizzArd> Axman6: sure, but in my case the queries are editable by certain admin users.
2021-07-13 01:53:21 +0200 <Axman6> quick hack would be to split on ;
2021-07-13 01:53:45 +0200argento(~argent0@168-227-97-29.ptr.westnet.com.ar)
2021-07-13 01:54:38 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:6d00:2ab2:6519:235b)
2021-07-13 01:54:50 +0200argento(~argent0@168-227-97-29.ptr.westnet.com.ar) (Client Quit)
2021-07-13 01:55:21 +0200lavaman(~lavaman@98.38.249.169)
2021-07-13 01:56:56 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-13 01:57:08 +0200lavaman(~lavaman@98.38.249.169)
2021-07-13 01:59:11 +0200 <hololeap> this seems really convoluted for such a common use case
2021-07-13 02:00:11 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-13 02:01:17 +0200 <Axman6> hololeap: https://github.com/pcapriotti/optparse-applicative
2021-07-13 02:02:39 +0200 <hololeap> Axman6: ha, I should have looked there first ... :)
2021-07-13 02:03:12 +0200vicfred(~vicfred@user/vicfred)
2021-07-13 02:05:09 +0200 <AWizzArd> Looking for: (Traversable t) => t a -> Maybe a
2021-07-13 02:05:51 +0200 <Axman6> (^? traverse) :P
2021-07-13 02:05:59 +0200 <Axman6> :t (^? traverse)
2021-07-13 02:06:00 +0200 <lambdabot> Traversable t => t a -> Maybe a
2021-07-13 02:06:28 +0200 <glguy> :t foldr (\x _ -> Just x) Nothing
2021-07-13 02:06:29 +0200 <lambdabot> Foldable t => t a -> Maybe a
2021-07-13 02:06:36 +0200 <Raugh> hmm, neither fromString nor BS.pack are working for me
2021-07-13 02:06:41 +0200 <Raugh> constructor not in scope
2021-07-13 02:07:15 +0200 <Raugh> AWizzArd: are you using that exact syntax? for me its a type error
2021-07-13 02:08:31 +0200 <geekosaur> looks to me like the Query data constructor might not be exported
2021-07-13 02:08:42 +0200 <AWizzArd> What is your type error? In my code I have literally: (Query qry) where `qry` is coming from my DB from an earlier query.
2021-07-13 02:09:22 +0200 <AWizzArd> geekosaur: I am doing import Database.PostgreSQL.Simple.Types ( Query (..) )
2021-07-13 02:09:25 +0200 <geekosaur> which was a worry given the docs said it was a wrapped ByteString with a restricted API for type safety
2021-07-13 02:09:56 +0200 <geekosaur> AWizzArd, that might well succeed importing nothing if the data constructor isn't exported
2021-07-13 02:10:17 +0200 <AWizzArd> geekosaur: I can at least tell that my code runs/works.
2021-07-13 02:10:31 +0200 <geekosaur> what version of postgresql-simple?
2021-07-13 02:10:40 +0200 <Axman6> it's ecported in the latest release
2021-07-13 02:10:45 +0200 <Axman6> exported*
2021-07-13 02:11:12 +0200 <Raugh> how do i tell which version got pulled in by stack?
2021-07-13 02:11:23 +0200 <AWizzArd> geekosaur: https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/src/Database.PostgreSQL.Simple.Ty…
2021-07-13 02:11:33 +0200 <Raugh> Yeah I'm impoerting Query (..)
2021-07-13 02:11:33 +0200 <AWizzArd> In there I see an export.
2021-07-13 02:11:48 +0200 <AWizzArd> Raugh: can you please paste the type error that you see?
2021-07-13 02:11:55 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-07-13 02:12:13 +0200 <Raugh> 0.6.4
2021-07-13 02:12:14 +0200 <geekosaur> yeh, I just checked that myself
2021-07-13 02:12:22 +0200 <geekosaur> so it's exported
2021-07-13 02:12:35 +0200 <AWizzArd> newtype Query = Query { fromQuery :: ByteString } deriving (Eq, Ord, Typeable)} deriving (Eq, Ord, Typeable)
2021-07-13 02:12:41 +0200yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
2021-07-13 02:13:01 +0200 <AWizzArd> Raugh: if you import Query (..) and pass in a ByteString then it will work.
2021-07-13 02:13:06 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-13 02:13:17 +0200 <Raugh> ok its imported now i'm on to bytesting errors i should be able to figure these out
2021-07-13 02:13:30 +0200yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp)
2021-07-13 02:13:54 +0200 <Raugh> BS.pack is expecting a Word8 not [Char] going to the docs
2021-07-13 02:13:59 +0200 <AWizzArd> Raugh: from what module do you try to import ByteString? The PG lib is doing it like this: import Data.ByteString (ByteString)
2021-07-13 02:14:11 +0200 <AWizzArd> I keep forgetting if this is strict or lazy.
2021-07-13 02:14:28 +0200 <Raugh> import qualified Data.ByteString as BS (pack)
2021-07-13 02:14:30 +0200 <geekosaur> Raugh, you should probably use what I pasted originally, which deals with UTF8
2021-07-13 02:14:58 +0200 <geekosaur> there's an ugly hack Data.ByteString.Char8 but that will fail if there's any Unicode involved
2021-07-13 02:15:22 +0200 <geekosaur> it pack will appear to work but silently produce garbage
2021-07-13 02:15:25 +0200 <geekosaur> *its
2021-07-13 02:15:32 +0200 <AWizzArd> Raugh: how do you read from your file? Are you using something like https://hackage.haskell.org/package/bytestring-0.11.1.0/docs/Data-ByteString.html#v:readFile
2021-07-13 02:15:56 +0200mikolaj__(~mikon@duch.mimuw.edu.pl) (Ping timeout: 265 seconds)
2021-07-13 02:16:06 +0200 <Raugh> geekosaur: I couldn't parse what you posted, should I be using Data.String fromString?
2021-07-13 02:16:48 +0200 <Raugh> I'm using a derpy yaml config of all things, maybe its time to go back to the books on this one.
2021-07-13 02:17:05 +0200 <geekosaur> https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/src/Database.PostgreSQL.Simple.Ty… which uses stringUtf8 and fromString
2021-07-13 02:17:34 +0200mikolaj(~mikon@duch.mimuw.edu.pl)
2021-07-13 02:17:40 +0200 <geekosaur> alternately read the ByteString as a ByteString and just wrap it in Query
2021-07-13 02:18:03 +0200chomwitt(~Pitsikoko@2a02:587:dc04:e00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-07-13 02:18:44 +0200 <AWizzArd> Raugh: yeah, what geekosaur just wrote sounds good. Can you possibly use a `readFile` function that will actually give you directly a BS?
2021-07-13 02:19:20 +0200Danishman(~Allan@2-104-144-110-cable.dk.customer.tdc.net) (Quit: Leaving)
2021-07-13 02:19:54 +0200 <AWizzArd> glguy: ah, interesting foldr!
2021-07-13 02:20:32 +0200mikail_(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-13 02:20:36 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-13 02:20:49 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-07-13 02:22:08 +0200 <Raugh> geekosaur: oh interesting, i'll try it that uses some parts of postgresql.simple as well
2021-07-13 02:22:17 +0200trufas(~trufas@177.240.218.218) (Ping timeout: 252 seconds)
2021-07-13 02:22:50 +0200trufas(~trufas@177.240.218.218)
2021-07-13 02:25:08 +0200mikail_(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 256 seconds)
2021-07-13 02:27:23 +0200warnz(~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452)
2021-07-13 02:28:07 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-07-13 02:30:06 +0200dajoer(~david@user/gvx)
2021-07-13 02:31:56 +0200warnz(~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452) (Ping timeout: 256 seconds)
2021-07-13 02:31:57 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-13 02:32:50 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-13 02:34:25 +0200 <Raugh> lol, ok copied the same composition of funcions in as a helper but now for some reason its injecting table names in my sql wrong its adding quotes around them I must be using the wrong type. I'm using Only String as the table name
2021-07-13 02:35:31 +0200 <c_wraith> most parameterized query libraries don't let you parameterize the name of the table
2021-07-13 02:38:04 +0200tabemann_tabemann
2021-07-13 02:38:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 02:39:10 +0200mikail_(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-13 02:39:59 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-13 02:41:00 +0200 <Raugh> ok, i think i'm starting to be able to walk here. Theres an Identifier in types i can use to tell it to treat it as a table name
2021-07-13 02:41:34 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 256 seconds)
2021-07-13 02:42:40 +0200retro_(~retro@90.218.175.34)
2021-07-13 02:46:49 +0200retroid_(~retro@90.218.175.34) (Ping timeout: 268 seconds)
2021-07-13 02:47:12 +0200 <Raugh> AWizzArd: geekosaur: thanks!
2021-07-13 02:49:48 +0200favonia(~favonia@user/favonia)
2021-07-13 02:52:08 +0200warnz(~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452)
2021-07-13 02:52:48 +0200mikail_(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 255 seconds)
2021-07-13 02:56:45 +0200codedmart(codedmart@2600:3c01::f03c:92ff:fefe:8511) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2021-07-13 02:56:51 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 255 seconds)
2021-07-13 02:57:01 +0200codedmart(~codedmart@li335-49.members.linode.com)
2021-07-13 03:08:18 +0200warnz(~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452) (Remote host closed the connection)
2021-07-13 03:12:44 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-07-13 03:17:49 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-13 03:20:07 +0200notzmv(~zmv@user/notzmv)
2021-07-13 03:20:09 +0200Jonno_FT1(~come@api.carswap.me) (Quit: Reconnecting)
2021-07-13 03:20:15 +0200Jonno_FTW(~come@api.carswap.me)
2021-07-13 03:21:02 +0200smichel17(~smichel17@2601:193:8300:4b9::600) (Quit: smichel17)
2021-07-13 03:22:04 +0200Jonno_FTW(~come@api.carswap.me) (Changing host)
2021-07-13 03:22:04 +0200Jonno_FTW(~come@user/jonno-ftw/x-0835346)
2021-07-13 03:29:25 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-13 03:29:48 +0200xff0x(~xff0x@2001:1a81:52d6:3f00:1a58:61d8:8aa3:1417) (Ping timeout: 272 seconds)
2021-07-13 03:29:59 +0200 <hololeap> Axman6: that answered my question about how to get the --help option, but I would like to get some more fine-grained control over options that I don't think is going to be convenient using the Applicative and Alternative interface,
2021-07-13 03:30:42 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-13 03:30:50 +0200Vajb(~Vajb@85-76-37-111-nat.elisa-mobile.fi)
2021-07-13 03:31:02 +0200 <hololeap> I would like to do further processing of the arguments that were passed in, and have the option to exit and print the help outside the execParser function
2021-07-13 03:31:25 +0200xff0x(~xff0x@2001:1a81:5314:1800:204a:df94:d24b:de67)
2021-07-13 03:31:46 +0200 <hololeap> so having something like `printHelp :: ParserInfo a -> IO ()` would be very useful
2021-07-13 03:34:03 +0200 <hololeap> for instance, I don't want to allow a certain number to be less than 1, but I don't think it's possible to check this within the Parser since there is no Monad instance
2021-07-13 03:37:01 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-13 03:38:33 +0200Vajb(~Vajb@85-76-37-111-nat.elisa-mobile.fi) (Read error: Connection reset by peer)
2021-07-13 03:40:21 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-13 03:48:20 +0200alx741(~alx741@186.178.108.22) (Quit: alx741)
2021-07-13 03:51:20 +0200pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2021-07-13 03:55:14 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-07-13 03:55:37 +0200smtnet3(~asdfasdfa@202.36.244.25)
2021-07-13 03:56:10 +0200pavonia(~user@user/siracusa)
2021-07-13 03:56:12 +0200 <dmj`> hololeap: optparse-applicative supports all of that
2021-07-13 04:03:54 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 276 seconds)
2021-07-13 04:06:13 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-07-13 04:06:20 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-13 04:08:13 +0200hendursaga(~weechat@user/hendursaga)
2021-07-13 04:09:48 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-13 04:11:40 +0200wei2912(~wei2912@112.199.250.21)
2021-07-13 04:15:21 +0200wei2912(~wei2912@112.199.250.21) (Read error: Connection reset by peer)
2021-07-13 04:16:10 +0200wei2912(~wei2912@112.199.250.21)
2021-07-13 04:16:34 +0200P1RATEZ(piratez@user/p1ratez) (Remote host closed the connection)
2021-07-13 04:19:36 +0200td_(~td@94.134.91.208) (Ping timeout: 272 seconds)
2021-07-13 04:19:42 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-07-13 04:19:42 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (molybdenum.libera.chat (Nickname regained by services)))
2021-07-13 04:19:42 +0200finn_elijaFinnElija
2021-07-13 04:21:03 +0200td_(~td@94.134.91.7)
2021-07-13 04:21:18 +0200derelict(~derelict@user/derelict) (Ping timeout: 256 seconds)
2021-07-13 04:21:34 +0200koz-(~koz@121.99.240.58)
2021-07-13 04:22:05 +0200koz(~koz@2404:4408:4309:8800:f7ec:14dd:f995:fa8c) (Ping timeout: 255 seconds)
2021-07-13 04:22:31 +0200koz-koz
2021-07-13 04:25:03 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-13 04:30:21 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-13 04:35:32 +0200zmt01(~zmt00@user/zmt00) (Quit: Gone.)
2021-07-13 04:38:48 +0200zmt00(~zmt00@user/zmt00)
2021-07-13 04:42:52 +0200phma(phma@2001:5b0:211b:d008:91ae:cdcd:6362:add2) (Read error: Connection reset by peer)
2021-07-13 04:47:58 +0200phma(~phma@host-67-44-208-254.hnremote.net)
2021-07-13 04:48:27 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
2021-07-13 04:54:36 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 276 seconds)
2021-07-13 04:57:33 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 268 seconds)
2021-07-13 04:58:35 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-07-13 05:00:05 +0200finsternis(~X@23.226.237.192) (Remote host closed the connection)
2021-07-13 05:00:13 +0200 <hololeap> dmj`: how do you just print out the help as an IO operation?
2021-07-13 05:00:33 +0200eggplant_(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-13 05:02:34 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-13 05:02:51 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:6d00:2ab2:6519:235b) (Ping timeout: 255 seconds)
2021-07-13 05:05:09 +0200 <dmj`> hololeap: you can do it all purely before you print anything, https://hackage.haskell.org/package/optparse-applicative-0.16.1.0/docs/Options-Applicative.html#v:…
2021-07-13 05:06:41 +0200hook54321_hook54321
2021-07-13 05:08:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 05:10:40 +0200 <dmj`> hololeap: running a failing parser purely will get you the help object
2021-07-13 05:12:22 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
2021-07-13 05:12:23 +0200 <hololeap> dmj`: that makes sense, but I have an Int that represents string length which needs to be >=1 ... as far as I can tell, there would be no way to check this and have the parser fail until after the parser was run, even running it purely
2021-07-13 05:14:39 +0200 <hololeap> even if that were possible, there are some other fine-grained things I would like to do, such as ensuring at least one of a set of options is passed, or none at all
2021-07-13 05:15:26 +0200 <hololeap> it can be done with the Alternative instance, but it just makes more sense to have a second level of argument validation after the Parser is run, and it would be nice to have the option to print the help screen there
2021-07-13 05:15:54 +0200 <glguy> hololeap: an flag taking an option would use something like: option :: ReadM a -> Mod OptionFields a -> Parser a
2021-07-13 05:15:56 +0200 <dmj`> hololeap: you can validate the arguments before you run the parser, then just run your parser with prefShowHelpOnEmpty = True
2021-07-13 05:15:56 +0200thiross(~user@173.242.113.143.16clouds.com)
2021-07-13 05:16:08 +0200 <glguy> ReadM is a Monad, so you can do arbitrary dependencies there (like checking for >= 1)
2021-07-13 05:16:20 +0200 <glguy> hololeap: is that what you're asking about?
2021-07-13 05:16:50 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Ping timeout: 256 seconds)
2021-07-13 05:17:58 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-07-13 05:21:00 +0200 <hololeap> glguy: that was one of my concerns, and you make a good point about ReadM being a Monad. I will remember that
2021-07-13 05:22:36 +0200 <hololeap> but in general, I want to do some validation of arguments that seem like they would be much easier to do _after_ running the Parser, and I would like to have access to the help text in case I want to print that out
2021-07-13 05:23:12 +0200 <hololeap> I could just move on and print out an error without the help text
2021-07-13 05:24:40 +0200phma(~phma@host-67-44-208-254.hnremote.net) (Read error: Connection reset by peer)
2021-07-13 05:25:07 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-07-13 05:25:48 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
2021-07-13 05:34:11 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-13 05:37:28 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-13 05:38:56 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-07-13 05:39:49 +0200phma(phma@2001:5b0:211f:8638:196:5581:d6d8:1f7e)
2021-07-13 05:42:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-07-13 05:52:05 +0200thiross(~user@173.242.113.143.16clouds.com) (Remote host closed the connection)
2021-07-13 05:52:22 +0200thiross(~user@173.242.113.143.16clouds.com)
2021-07-13 06:02:12 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-07-13 06:02:25 +0200juhp(~juhp@128.106.188.66)
2021-07-13 06:04:57 +0200thiross(~user@173.242.113.143.16clouds.com) (Ping timeout: 255 seconds)
2021-07-13 06:11:56 +0200nick80(~nick@76-236-222-208.lightspeed.tukrga.sbcglobal.net)
2021-07-13 06:12:13 +0200 <nick80> hello
2021-07-13 06:13:37 +0200 <glguy> hi
2021-07-13 06:19:48 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
2021-07-13 06:20:10 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-13 06:20:42 +0200prite(~pritam@user/pritambaral)
2021-07-13 06:29:47 +0200hatz_(~user@2a05:f480:1400:f44:5400:3ff:fe6d:f349) (Quit: hatz_)
2021-07-13 06:31:29 +0200hatz_(~user@2a05:f480:1400:f44:5400:3ff:fe6d:f349)
2021-07-13 06:37:16 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 272 seconds)
2021-07-13 06:42:24 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 256 seconds)
2021-07-13 06:44:59 +0200nick80(~nick@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Connection closed)
2021-07-13 06:48:46 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-07-13 06:51:00 +0200sheepduck(~sheepduck@user/sheepduck) (Remote host closed the connection)
2021-07-13 06:59:35 +0200hexfive(~eric@50.35.83.177) (Quit: WeeChat 3.0)
2021-07-13 07:06:13 +0200berberman_(~berberman@user/berberman)
2021-07-13 07:06:36 +0200berberman(~berberman@user/berberman) (Ping timeout: 255 seconds)
2021-07-13 07:08:18 +0200qbt(~edun@user/edun)
2021-07-13 07:09:03 +0200warnz(~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452)
2021-07-13 07:11:21 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
2021-07-13 07:12:44 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-07-13 07:12:44 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Read error: Connection reset by peer)
2021-07-13 07:12:53 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-07-13 07:13:17 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
2021-07-13 07:14:00 +0200warnz(~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452) (Ping timeout: 272 seconds)
2021-07-13 07:15:09 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-13 07:21:57 +0200whoschen(~user@58.210.85.58)
2021-07-13 07:28:00 +0200favonia(~favonia@user/favonia)
2021-07-13 07:29:28 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-13 07:30:26 +0200Guest25(~Guest25@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
2021-07-13 07:34:06 +0200jneira(~jneira@212.8.115.226)
2021-07-13 07:39:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 07:53:24 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-07-13 08:03:19 +0200fef(~thedawn@user/thedawn)
2021-07-13 08:04:37 +0200whoschen(~user@58.210.85.58) (ERC (IRC client for Emacs 27.1))
2021-07-13 08:07:48 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 255 seconds)
2021-07-13 08:14:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-13 08:16:10 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-13 08:20:51 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-13 08:20:55 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-07-13 08:21:24 +0200Raugh(~mike@174.127.249.180) (Remote host closed the connection)
2021-07-13 08:26:12 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net)
2021-07-13 08:37:26 +0200favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-07-13 08:41:56 +0200fendor(~fendor@178.115.59.187.wireless.dyn.drei.com)
2021-07-13 08:42:18 +0200favonia(~favonia@user/favonia)
2021-07-13 08:45:01 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-07-13 08:46:30 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2021-07-13 08:48:02 +0200a6a45081-2b83(~aditya@223.226.229.57)
2021-07-13 08:53:22 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-13 08:59:03 +0200chele(~chele@user/chele)
2021-07-13 09:00:31 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-07-13 09:01:00 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
2021-07-13 09:06:09 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Ping timeout: 276 seconds)
2021-07-13 09:07:20 +0200wwalkerwwalker_comatose
2021-07-13 09:09:20 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-07-13 09:10:03 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 276 seconds)
2021-07-13 09:11:52 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-13 09:12:20 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-07-13 09:15:36 +0200acidjnk(~acidjnk@p200300d0c72b95096d4cdcac61b6b349.dip0.t-ipconnect.de)
2021-07-13 09:16:33 +0200jlamothe(~jlamothe@198.251.60.157) (Ping timeout: 268 seconds)
2021-07-13 09:17:47 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-13 09:18:00 +0200jlamothe(~jlamothe@198.251.60.157)
2021-07-13 09:20:18 +0200jespada(~jespada@90.254.247.46) (Ping timeout: 265 seconds)
2021-07-13 09:21:24 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-07-13 09:22:31 +0200jespada(~jespada@90.254.247.46)
2021-07-13 09:22:57 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-07-13 09:24:45 +0200trufas(~trufas@177.240.218.218) (Ping timeout: 255 seconds)
2021-07-13 09:27:03 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
2021-07-13 09:28:42 +0200trufas(~trufas@177.240.218.218)
2021-07-13 09:30:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 09:31:16 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 256 seconds)
2021-07-13 09:32:06 +0200Pickchea(~private@user/pickchea)
2021-07-13 09:33:51 +0200eggplant_(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-13 09:34:54 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-07-13 09:41:51 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-13 09:41:53 +0200MQ-17J(~MQ-17J@8.21.10.15) (Read error: Connection reset by peer)
2021-07-13 09:42:04 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-07-13 09:42:16 +0200favonia(~favonia@user/favonia)
2021-07-13 09:42:44 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-13 09:45:37 +0200euandreh(~euandreh@2804:14c:33:9fe5:3720:61ec:ee32:2ddc) (Ping timeout: 246 seconds)
2021-07-13 09:46:49 +0200euandreh(~euandreh@2804:14c:33:9fe5:50a8:9802:856c:54ce)
2021-07-13 09:52:51 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-07-13 09:53:20 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-13 09:57:09 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-13 09:57:34 +0200favonia(~favonia@user/favonia)
2021-07-13 09:57:35 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
2021-07-13 09:58:36 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-07-13 09:59:35 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
2021-07-13 10:01:52 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-13 10:02:05 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-13 10:06:42 +0200hendursa1(~weechat@user/hendursaga)
2021-07-13 10:08:55 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-07-13 10:10:19 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-13 10:10:30 +0200jlamothe(~jlamothe@198.251.60.157) (Ping timeout: 276 seconds)
2021-07-13 10:12:59 +0200AlexZenon_2(~alzenon@94.233.240.7)
2021-07-13 10:13:31 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-07-13 10:13:40 +0200AlexZenon(~alzenon@94.233.240.7) (Read error: Connection reset by peer)
2021-07-13 10:16:00 +0200jlamothe(~jlamothe@198.251.60.157)
2021-07-13 10:17:32 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-07-13 10:17:46 +0200juhp(~juhp@128.106.188.66)
2021-07-13 10:18:56 +0200favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-07-13 10:19:21 +0200favonia(~favonia@user/favonia)
2021-07-13 10:24:23 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-13 10:25:09 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-07-13 10:25:36 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-07-13 10:26:24 +0200anonymous-haskel(~anonymous@78.155.54.115)
2021-07-13 10:26:58 +0200anonymous-haskel(~anonymous@78.155.54.115) (Client Quit)
2021-07-13 10:27:27 +0200haskell-anon(~haskell-a@78.155.54.115)
2021-07-13 10:27:48 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
2021-07-13 10:27:56 +0200Lord_of_Life_Lord_of_Life
2021-07-13 10:28:30 +0200favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-07-13 10:29:21 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 276 seconds)
2021-07-13 10:33:18 +0200zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-07-13 10:34:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-13 10:35:04 +0200michalz(~michalz@185.246.204.45)
2021-07-13 10:44:24 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2021-07-13 10:45:27 +0200Xnuk(~xnuk@45.76.202.58) (Quit: ZNC - https://znc.in)
2021-07-13 10:45:44 +0200Xnuk(~xnuk@vultr.xnu.kr)
2021-07-13 10:45:56 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
2021-07-13 10:46:08 +0200tom__(~tom@2a00:23c8:9700:8001:a918:fa2c:4713:fcbd)
2021-07-13 10:46:45 +0200Katarushisu(~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) (Ping timeout: 258 seconds)
2021-07-13 10:48:27 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 255 seconds)
2021-07-13 10:48:39 +0200a6a45081-2b83(~aditya@223.226.229.57) (Remote host closed the connection)
2021-07-13 10:49:39 +0200azeem(~azeem@176.201.21.158)
2021-07-13 10:50:01 +0200zincy__(~tom@2a00:23c8:9700:8001:6c68:60ee:e6e9:8a4c) (Ping timeout: 246 seconds)
2021-07-13 10:50:04 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-13 10:51:05 +0200zcombinator(~zcombinat@host-80-104-237-159.retail.telecomitalia.it)
2021-07-13 10:51:48 +0200zaquest(~notzaques@5.128.210.178)
2021-07-13 10:52:15 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-13 10:52:24 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2021-07-13 10:52:40 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-07-13 10:52:52 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de)
2021-07-13 10:56:10 +0200hatz_(~user@2a05:f480:1400:f44:5400:3ff:fe6d:f349) ()
2021-07-13 10:57:38 +0200Katarushisu(~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net)
2021-07-13 11:02:20 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-07-13 11:03:21 +0200GIANTWORLDKEEPER(~pjetcetal@128-71-13-182.broadband.corbina.ru) (Read error: Connection reset by peer)
2021-07-13 11:09:36 +0200azeem(~azeem@176.201.21.158) (Ping timeout: 255 seconds)
2021-07-13 11:11:25 +0200azeem(~azeem@176.201.21.158)
2021-07-13 11:13:41 +0200GIANTWORLDKEEPER(~pjetcetal@128-71-13-182.broadband.corbina.ru)
2021-07-13 11:16:34 +0200azeem(~azeem@176.201.21.158) (Ping timeout: 272 seconds)
2021-07-13 11:17:35 +0200azeem(~azeem@176.201.21.158)
2021-07-13 11:24:02 +0200junkicide(~user@2a01:e0a:195:20c0:3def:71a:a949:5adb)
2021-07-13 11:25:23 +0200 <junkicide> I have the function length . lines <$> readFile "countLines.hs" but it gives an error when I try to fmap it over a list of filenames and I can't understand why
2021-07-13 11:25:46 +0200 <Rembane> junkicide: What's the error and what's your code?
2021-07-13 11:26:15 +0200azeem(~azeem@176.201.21.158) (Ping timeout: 255 seconds)
2021-07-13 11:26:30 +0200 <junkicide> countLines :: String -> String -> IO ()
2021-07-13 11:26:30 +0200 <junkicide> countLines str ext = do files <- getDirectoryContents str
2021-07-13 11:26:30 +0200 <junkicide> let filtered = [do y <- readFile x | x <- files, ext == takeWhile (/='.') (reverse x)]
2021-07-13 11:26:30 +0200 <junkicide> putStrLn $ show $ zip files $ fmap ( length . lines) filtered
2021-07-13 11:27:20 +0200 <junkicide> hang on, this isn't the right one
2021-07-13 11:28:20 +0200fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-07-13 11:28:28 +0200azeem(~azeem@176.201.21.158)
2021-07-13 11:28:44 +0200GIANTWORLDKEEPERpj_
2021-07-13 11:29:22 +0200 <Rembane> junkicide: Put it in a pastebin instead, like for instance: https://paste.tomsmeding.com/
2021-07-13 11:30:22 +0200 <junkicide> ok that's useful, thanks
2021-07-13 11:31:05 +0200 <Rembane> No worries. :)
2021-07-13 11:31:46 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl) (Ping timeout: 265 seconds)
2021-07-13 11:33:35 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-07-13 11:33:54 +0200 <junkicide> here it is
2021-07-13 11:33:55 +0200 <junkicide> https://paste.tomsmeding.com/vaSgxQD6
2021-07-13 11:34:01 +0200 <smtnet3> seems to work on my end
2021-07-13 11:34:03 +0200agua(~agua@2804:18:49:ccb3:1:0:1397:e350)
2021-07-13 11:34:35 +0200 <smtnet3> (length . lines) <$> readFile "Chapter6.hs"
2021-07-13 11:35:11 +0200 <junkicide> yeah the problem comes when I try to fmap it over a list of filenames
2021-07-13 11:36:12 +0200 <Rembane> junkicide: You need to use one fmap to do things on IO, and then another fmap to do things on the contents of list.
2021-07-13 11:36:22 +0200 <smtnet3> try fmap . fmap
2021-07-13 11:36:32 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-07-13 11:36:53 +0200 <smtnet3> :t (fmap . fmap)
2021-07-13 11:36:54 +0200 <lambdabot> (Functor f1, Functor f2) => (a -> b) -> f1 (f2 a) -> f1 (f2 b)
2021-07-13 11:36:57 +0200hyiltiz(~quassel@31.220.5.250)
2021-07-13 11:37:30 +0200azeem(~azeem@176.201.21.158) (Ping timeout: 255 seconds)
2021-07-13 11:37:41 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl)
2021-07-13 11:38:10 +0200 <junkicide> oh, fmap . fmap doesn't seem to work right away but I see where the problem is
2021-07-13 11:38:22 +0200 <junkicide> thanks smtnet3 and Rembane
2021-07-13 11:38:58 +0200 <smtnet3> junkicide, n/w
2021-07-13 11:41:25 +0200azeem(~azeem@176.201.7.106)
2021-07-13 11:42:45 +0200pesada(~agua@2804:14c:8793:8e2f:98f1:8c28:1a2b:634a)
2021-07-13 11:44:10 +0200Core8606(~agua@2804:18:49:ccb3:1:0:1397:e350)
2021-07-13 11:44:24 +0200agua(~agua@2804:18:49:ccb3:1:0:1397:e350) (Read error: Connection reset by peer)
2021-07-13 11:44:44 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-07-13 11:46:57 +0200pesada(~agua@2804:14c:8793:8e2f:98f1:8c28:1a2b:634a) (Ping timeout: 255 seconds)
2021-07-13 11:47:06 +0200fef(~thedawn@user/thedawn)
2021-07-13 11:47:28 +0200fef(~thedawn@user/thedawn) (Client Quit)
2021-07-13 11:50:02 +0200 <haskell-anon> how do you make lsp's "jump to definition" work with dependencies
2021-07-13 11:50:32 +0200jippiedoe(~david@145.107.129.65)
2021-07-13 11:52:53 +0200lep-(~lep@94.31.97.183)
2021-07-13 11:53:16 +0200lep(~lep@94.31.86.183) (Read error: Connection reset by peer)
2021-07-13 11:54:00 +0200lep(~lep@94.31.86.183)
2021-07-13 11:56:22 +0200 <smtnet3> w/ emacs, haskell-anon
2021-07-13 11:56:24 +0200 <smtnet3> *?
2021-07-13 11:56:35 +0200 <haskell-anon> yes, with emacs
2021-07-13 11:56:52 +0200 <Rembane> junkicide: np!
2021-07-13 11:57:05 +0200qbt(~edun@user/edun) (Quit: WeeChat 3.2)
2021-07-13 11:57:42 +0200 <smtnet3> unrelated but why is this the case with multiple shadowing bindings... let seems to take precedence over where https://pastebin.com/XBgTHEvw
2021-07-13 11:57:44 +0200lep-(~lep@94.31.97.183) (Ping timeout: 272 seconds)
2021-07-13 11:58:20 +0200 <smtnet3> haskell-anon, there's an lsp discord if you don't find your answer here
2021-07-13 11:58:47 +0200 <haskell-anon> ok
2021-07-13 11:58:47 +0200 <smtnet3> lsp is a pain to setup if you don't know the whole shebang of it all
2021-07-13 11:59:23 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-07-13 11:59:49 +0200 <tomsmeding> smtnet3: the where-block is attached to the whole function right-hand side here
2021-07-13 12:00:24 +0200 <tomsmeding> haskell-anon: there is also #haskell-language-server on this irc network :)
2021-07-13 12:00:53 +0200fef(~thedawn@user/thedawn)
2021-07-13 12:02:52 +0200__monty__(~toonn@user/toonn)
2021-07-13 12:10:32 +0200Atum_(IRC@user/atum/x-2392232)
2021-07-13 12:11:03 +0200 <smtnet3> ah thanks, makes sense
2021-07-13 12:11:10 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Quit: -)
2021-07-13 12:14:04 +0200Kugge(~Kugge@2a01:cb15:81e5:f00:cdab:bdca:57aa:ef6f)
2021-07-13 12:15:44 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-07-13 12:18:26 +0200agua(~agua@2804:14c:8793:8e2f:5173:dc4e:eaad:a0b8)
2021-07-13 12:20:21 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-07-13 12:21:51 +0200Kugge(~Kugge@2a01:cb15:81e5:f00:cdab:bdca:57aa:ef6f) (Quit: Client closed)
2021-07-13 12:23:06 +0200Core8606(~agua@2804:18:49:ccb3:1:0:1397:e350) (Ping timeout: 276 seconds)
2021-07-13 12:24:09 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Client Quit)
2021-07-13 12:24:23 +0200 <fef> feel Recursion is too hard.
2021-07-13 12:25:11 +0200 <fef> and finding recurrence relation the most hardest part
2021-07-13 12:26:06 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-13 12:30:14 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 12:30:49 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-13 12:31:00 +0200kadobanana(~mud@user/kadoban)
2021-07-13 12:31:06 +0200pesada(~agua@2804:18:49:ccb3:1:0:1397:e350)
2021-07-13 12:31:56 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-13 12:34:18 +0200agua(~agua@2804:14c:8793:8e2f:5173:dc4e:eaad:a0b8) (Ping timeout: 256 seconds)
2021-07-13 12:34:43 +0200pj_(~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
2021-07-13 12:35:13 +0200GIANTWORLDKEEPER(~pjetcetal@128-71-13-182.broadband.corbina.ru)
2021-07-13 12:35:54 +0200 <smtnet3> if you're completely new to recursion the first time it can feel a little weird
2021-07-13 12:36:45 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 276 seconds)
2021-07-13 12:36:51 +0200 <smtnet3> come back to it again after a little while again. There's also some great resources on youtube that introduce the concept very well
2021-07-13 12:37:38 +0200dre(~dre@2001:8003:c932:c301:44a6:1427:4d7d:b99a) (Quit: Leaving)
2021-07-13 12:37:55 +0200tlax(tlax@kapsi.fi) (Ping timeout: 258 seconds)
2021-07-13 12:38:12 +0200ent(entgod@kapsi.fi) (Ping timeout: 268 seconds)
2021-07-13 12:41:08 +0200ent(entgod@kapsi.fi)
2021-07-13 12:41:08 +0200tlax(tlax@kapsi.fi)
2021-07-13 12:42:57 +0200 <fef> smtnet3, not new
2021-07-13 12:43:44 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-07-13 12:46:06 +0200AlexZenon_2AlexZenon
2021-07-13 12:46:30 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Ping timeout: 272 seconds)
2021-07-13 12:55:21 +0200azeem(~azeem@176.201.7.106) (Ping timeout: 255 seconds)
2021-07-13 12:55:41 +0200azeem(~azeem@176.201.7.106)
2021-07-13 12:59:30 +0200ent(entgod@kapsi.fi) (Ping timeout: 276 seconds)
2021-07-13 13:01:44 +0200ent(entgod@kapsi.fi)
2021-07-13 13:02:33 +0200oxide(~lambda@user/oxide)
2021-07-13 13:04:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-07-13 13:05:28 +0200cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2021-07-13 13:05:31 +0200MorrowM(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
2021-07-13 13:05:39 +0200haskell-anon(~haskell-a@78.155.54.115) (Quit: Client closed)
2021-07-13 13:05:45 +0200cheater(~Username@user/cheater)
2021-07-13 13:06:10 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-07-13 13:07:06 +0200AlexNoo_(~AlexNoo@178.34.162.3)
2021-07-13 13:09:53 +0200AlexZenon(~alzenon@94.233.240.7) (Ping timeout: 265 seconds)
2021-07-13 13:09:53 +0200Alex_test(~al_test@94.233.240.7) (Ping timeout: 265 seconds)
2021-07-13 13:10:51 +0200AlexNoo(~AlexNoo@94.233.240.7) (Ping timeout: 265 seconds)
2021-07-13 13:11:44 +0200MidAutumnMoon9(~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge)
2021-07-13 13:12:22 +0200MidAutumnMoon9(~MidAutumn@user/midautumnmoon)
2021-07-13 13:13:44 +0200Pickchea(~private@user/pickchea) (Ping timeout: 272 seconds)
2021-07-13 13:14:35 +0200Alex_test(~al_test@178.34.162.3)
2021-07-13 13:14:45 +0200AlexZenon(~alzenon@178.34.162.3)
2021-07-13 13:20:16 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-07-13 13:23:30 +0200niemand(~niemand@p2e52f80a.dip0.t-ipconnect.de)
2021-07-13 13:29:53 +0200smichel17(~smichel17@c-73-68-217-18.hsd1.ma.comcast.net)
2021-07-13 13:30:29 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-13 13:30:40 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-07-13 13:31:16 +0200jneira(~jneira@212.8.115.226)
2021-07-13 13:31:48 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Ping timeout: 255 seconds)
2021-07-13 13:31:59 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-07-13 13:32:04 +0200Teacup(~teacup@user/teacup) (Ping timeout: 246 seconds)
2021-07-13 13:32:06 +0200azeem(~azeem@176.201.7.106) (Ping timeout: 256 seconds)
2021-07-13 13:33:16 +0200azeem(~azeem@176.201.7.106)
2021-07-13 13:33:36 +0200Teacup(~teacup@user/teacup)
2021-07-13 13:33:57 +0200jippiedoe(~david@145.107.129.65) (Ping timeout: 276 seconds)
2021-07-13 13:36:35 +0200Pickchea(~private@user/pickchea)
2021-07-13 13:37:22 +0200jippiedoe(~david@145.107.129.65)
2021-07-13 13:37:35 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-07-13 13:38:51 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-07-13 13:38:53 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-13 13:39:27 +0200ukari(~ukari@user/ukari)
2021-07-13 13:41:58 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-13 13:42:19 +0200junkicide(~user@2a01:e0a:195:20c0:3def:71a:a949:5adb) (Remote host closed the connection)
2021-07-13 13:43:52 +0200cheater1__(~Username@user/cheater)
2021-07-13 13:45:04 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net)
2021-07-13 13:46:02 +0200cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2021-07-13 13:46:05 +0200cheater1__cheater
2021-07-13 13:48:30 +0200AlexNoo_AlexNoo
2021-07-13 13:53:22 +0200anandprabhu(~anandprab@94.202.243.198)
2021-07-13 13:58:00 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-13 13:58:18 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca)
2021-07-13 13:58:39 +0200azeem(~azeem@176.201.7.106) (Ping timeout: 276 seconds)
2021-07-13 14:00:36 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Ping timeout: 272 seconds)
2021-07-13 14:00:38 +0200azeem(~azeem@176.201.7.106)
2021-07-13 14:09:30 +0200azeem(~azeem@176.201.7.106) (Ping timeout: 256 seconds)
2021-07-13 14:10:36 +0200azeem(~azeem@176.201.32.198)
2021-07-13 14:11:24 +0200niemand(~niemand@p2e52f80a.dip0.t-ipconnect.de) (Quit: Connection closed)
2021-07-13 14:12:52 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-07-13 14:13:06 +0200juhp(~juhp@128.106.188.66)
2021-07-13 14:17:49 +0200ph88(~ph88@2a02:8109:9e00:7e5c:f009:5606:b7ea:3eb0) (Quit: Leaving)
2021-07-13 14:17:54 +0200mikail_(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-13 14:19:30 +0200azeem(~azeem@176.201.32.198) (Ping timeout: 255 seconds)
2021-07-13 14:19:58 +0200azeem(~azeem@176.201.32.198)
2021-07-13 14:24:26 +0200wolfshappen(~waff@irc.furworks.de)
2021-07-13 14:27:31 +0200favonia(~favonia@user/favonia)
2021-07-13 14:28:20 +0200smarton(~smarton@gnu/webmaster/smarton) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
2021-07-13 14:28:33 +0200smarton(~smarton@gnu/webmaster/smarton)
2021-07-13 14:29:12 +0200mikail_(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 276 seconds)
2021-07-13 14:31:09 +0200prite(~pritam@user/pritambaral) (Ping timeout: 276 seconds)
2021-07-13 14:31:57 +0200wolfshappen(~waff@irc.furworks.de) (Quit: later)
2021-07-13 14:32:06 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-07-13 14:32:22 +0200wolfshappen(~waff@irc.furworks.de)
2021-07-13 14:33:46 +0200azeem(~azeem@176.201.32.198) (Read error: Connection reset by peer)
2021-07-13 14:34:24 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 276 seconds)
2021-07-13 14:36:09 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-13 14:38:36 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 272 seconds)
2021-07-13 14:39:28 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-07-13 14:42:35 +0200hseg(~gesh@185.120.126.10)
2021-07-13 14:43:19 +0200 <hseg> hi. for a bit of pretty-printing, would like to define a type ~ (String, a -> b) and give it a Category instance
2021-07-13 14:43:29 +0200 <hseg> not sure how to spell the deriving via clause for this though
2021-07-13 14:44:23 +0200 <hseg> like, if I were just deriving (* -> *) -> Constraint I could derive via (K1 String :*: T)
2021-07-13 14:45:01 +0200 <hseg> but not sure how to make that product feed two arguments to the factors
2021-07-13 14:46:34 +0200lbseale(~lbseale@user/ep1ctetus)
2021-07-13 14:47:10 +0200 <hseg> also, is there a way to derivevia a single-constructor data type via its obvious repacking into a tuple?
2021-07-13 14:47:10 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-07-13 14:47:31 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-13 14:47:35 +0200 <hseg> eg data V3 a = V3 a a a deriving C via ((a,a,a) ?)
2021-07-13 14:47:50 +0200 <Hecate> davean: o/ hi! Could you remind me how you deal with routing API calls in Happstack to a Servant/WAI server? :)
2021-07-13 14:47:53 +0200 <hseg> .. oops, ? and ) transposed there
2021-07-13 14:50:53 +0200 <hseg> ah nm, can get away with Endo String :*: Endo a in my usecase, no need for the full power of Category
2021-07-13 14:51:09 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-07-13 14:53:08 +0200cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2021-07-13 14:53:37 +0200cheater(~Username@user/cheater)
2021-07-13 14:55:46 +0200 <hseg> hrm. is a bit painful though, would prefer a full category
2021-07-13 14:57:48 +0200lbseale(~lbseale@user/ep1ctetus) (Ping timeout: 276 seconds)
2021-07-13 15:00:42 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-07-13 15:00:51 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 15:01:08 +0200alx741(~alx741@186.178.108.22)
2021-07-13 15:03:10 +0200roconnor(~roconnor@host-45-78-194-41.dyn.295.ca)
2021-07-13 15:03:16 +0200 <roconnor> Module ‘Data.ByteString.Short’ does not export ‘reverse’. :(
2021-07-13 15:04:10 +0200qbt(~edun@user/edun)
2021-07-13 15:04:42 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-13 15:05:36 +0200ukari(~ukari@user/ukari)
2021-07-13 15:06:00 +0200thecoder(~mrrobot@static-47-206-93-60.tamp.fl.frontiernet.net)
2021-07-13 15:07:40 +0200agua(~agua@2804:18:46:bafa:1:0:1551:7319)
2021-07-13 15:10:09 +0200pesada(~agua@2804:18:49:ccb3:1:0:1397:e350) (Ping timeout: 276 seconds)
2021-07-13 15:12:58 +0200Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2021-07-13 15:15:31 +0200zebrag(~chris@user/zebrag)
2021-07-13 15:17:12 +0200anandprabhu(~anandprab@94.202.243.198) (Quit: Leaving)
2021-07-13 15:18:36 +0200hseg(~gesh@185.120.126.10) (Ping timeout: 276 seconds)
2021-07-13 15:22:18 +0200 <maerwald> roconnor: yeah
2021-07-13 15:22:32 +0200 <maerwald> roconnor: I've been creating my own prelude for it in another project
2021-07-13 15:23:43 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-13 15:24:11 +0200 <maerwald> I'm not sure if that was a concious decision to leave it crippled
2021-07-13 15:24:33 +0200 <maerwald> I mean, it's obvious that many operations require copying the entire bytestring
2021-07-13 15:24:35 +0200Pickchea(~private@user/pickchea)
2021-07-13 15:25:57 +0200hseg(~gesh@185.120.126.10)
2021-07-13 15:26:11 +0200 <maerwald> https://github.com/hasufell/abstract-filepath/blob/master/lib/AbstractFilePath/ShortByteString.hs but I don't have 'reverse', lol
2021-07-13 15:28:21 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-13 15:30:02 +0200 <davean> Hecate: https://hackage.haskell.org/package/happstack-server-7.7.1.1/docs/Happstack-Server-Internal-Monads… You build the happstack Request from WAI's, you call runServerPartT and then you convert the response back. IIRC, its been a long, long while.
2021-07-13 15:31:36 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-13 15:32:00 +0200chris-the-slurpa(~chris@81.96.113.213) (Read error: Connection reset by peer)
2021-07-13 15:32:12 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-13 15:33:37 +0200Sgeo(~Sgeo@user/sgeo)
2021-07-13 15:34:37 +0200dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2021-07-13 15:34:37 +0200dibblego(~dibblego@haskell/developer/dibblego)
2021-07-13 15:35:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
2021-07-13 15:38:25 +0200 <Hecate> davean: okay so it's really more about embedding Happstack in WAI and converting. :) Thank you!
2021-07-13 15:38:32 +0200 <davean> yep
2021-07-13 15:40:48 +0200jolly(~jolly@208.180.97.158) (Quit: Connection closed)
2021-07-13 15:44:36 +0200cheater(~Username@user/cheater) (Ping timeout: 258 seconds)
2021-07-13 15:45:00 +0200cheater(~Username@user/cheater)
2021-07-13 15:47:54 +0200favonia(~favonia@user/favonia) (Remote host closed the connection)
2021-07-13 15:49:04 +0200favonia(~favonia@user/favonia)
2021-07-13 15:52:12 +0200hseg(~gesh@185.120.126.10) (Ping timeout: 255 seconds)
2021-07-13 15:52:47 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-07-13 15:53:07 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-13 15:53:46 +0200acidjnk(~acidjnk@p200300d0c72b95096d4cdcac61b6b349.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-07-13 15:57:39 +0200zcombinator(~zcombinat@host-80-104-237-159.retail.telecomitalia.it) (Quit: WeeChat 3.2)
2021-07-13 16:00:18 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-07-13 16:01:19 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-13 16:02:07 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-13 16:02:16 +0200michalz(~michalz@185.246.204.45) (Remote host closed the connection)
2021-07-13 16:03:13 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-07-13 16:03:28 +0200juhp(~juhp@128.106.188.66)
2021-07-13 16:05:16 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-13 16:06:36 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Ping timeout: 255 seconds)
2021-07-13 16:07:22 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 256 seconds)
2021-07-13 16:07:46 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-07-13 16:08:57 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-07-13 16:10:12 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-13 16:10:36 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl) (Ping timeout: 276 seconds)
2021-07-13 16:15:39 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl)
2021-07-13 16:16:38 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-07-13 16:17:17 +0200hendursaga(~weechat@user/hendursaga)
2021-07-13 16:18:23 +0200Atum__(IRC@user/atum/x-2392232)
2021-07-13 16:18:48 +0200wwalker_comatosewwalker
2021-07-13 16:20:03 +0200stevenxl(~stevenlei@66.63.167.105)
2021-07-13 16:20:22 +0200smichel17(~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17)
2021-07-13 16:21:02 +0200smichel17(~smichel17@2601:193:8300:4b9::600)
2021-07-13 16:22:18 +0200Atum_(IRC@user/atum/x-2392232) (Ping timeout: 276 seconds)
2021-07-13 16:23:45 +0200warnz(~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net)
2021-07-13 16:28:02 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-13 16:28:08 +0200infinisil(~infinisil@2001:470:69fc:105::ff8) (*.net *.split)
2021-07-13 16:28:08 +0200vbeatrice[m](~vbeatrice@2001:470:69fc:105::3ebf) (*.net *.split)
2021-07-13 16:28:08 +0200jellz[m](~jellzmatr@2001:470:69fc:105::2daa) (*.net *.split)
2021-07-13 16:28:08 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d) (*.net *.split)
2021-07-13 16:28:08 +0200unrooted(~unrooted@2001:470:69fc:105::a4a) (*.net *.split)
2021-07-13 16:28:08 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db) (*.net *.split)
2021-07-13 16:28:08 +0200peddie(~peddie@2001:470:69fc:105::25d) (*.net *.split)
2021-07-13 16:28:08 +0200img(~img@user/img) (*.net *.split)
2021-07-13 16:28:08 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (*.net *.split)
2021-07-13 16:28:08 +0200sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net) (*.net *.split)
2021-07-13 16:28:08 +0200sshine(~simon@hubris.eta.solutions) (*.net *.split)
2021-07-13 16:28:08 +0200synthmeat(~synthmeat@user/synthmeat) (*.net *.split)
2021-07-13 16:28:08 +0200dminuoso(~dminuoso@user/dminuoso) (*.net *.split)
2021-07-13 16:28:08 +0200dextaa(~DV@aftr-37-201-214-197.unity-media.net) (*.net *.split)
2021-07-13 16:28:09 +0200welterde(welterde@thinkbase.srv.welterde.de) (*.net *.split)
2021-07-13 16:28:09 +0200AWizzArd(~code@user/awizzard) (*.net *.split)
2021-07-13 16:28:09 +0200vjoki(~vjoki@2a00:d880:3:1::fea1:9ae) (*.net *.split)
2021-07-13 16:28:09 +0200oldmate(~spider@user/oldmate) (*.net *.split)
2021-07-13 16:28:09 +0200jle`(~justin@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split)
2021-07-13 16:28:09 +0200xlei(znc@pool-68-129-84-118.nycmny.fios.verizon.net) (*.net *.split)
2021-07-13 16:28:09 +0200liskin(~liskin@xmonad/liskin) (*.net *.split)
2021-07-13 16:28:09 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split)
2021-07-13 16:28:09 +0200bastelfreak(~bastelfre@basteles-bastelknecht.bastelfreak.org) (*.net *.split)
2021-07-13 16:28:09 +0200cocreature(~moritz@2a03:b0c0:3:d0::c8:f001) (*.net *.split)
2021-07-13 16:28:13 +0200AWizzArd_(~code@gehrels.uberspace.de)
2021-07-13 16:28:17 +0200sqrt2_(~ben@80-108-18-7.cable.dynamic.surfer.at)
2021-07-13 16:28:18 +0200sshine(~simon@hubris.eta.solutions)
2021-07-13 16:28:28 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-07-13 16:28:29 +0200oldmate(~spider@vps-951ce37a.vps.ovh.ca)
2021-07-13 16:28:38 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de)
2021-07-13 16:28:38 +0200liskin(~liskin@ackle.nomi.cz)
2021-07-13 16:28:41 +0200dextaa(~DV@aftr-37-201-214-197.unity-media.net)
2021-07-13 16:28:42 +0200vjoki(~vjoki@2a00:d880:3:1::fea1:9ae)
2021-07-13 16:28:43 +0200jle`(~justin@cpe-23-240-75-236.socal.res.rr.com)
2021-07-13 16:28:52 +0200dminuoso(~dminuoso@static.88-198-218-68.clients.your-server.de)
2021-07-13 16:28:56 +0200bastelfreak(~bastelfre@basteles-bastelknecht.bastelfreak.org)
2021-07-13 16:28:57 +0200welterde(welterde@thinkbase.srv.welterde.de)
2021-07-13 16:29:09 +0200cocreature(~moritz@2a03:b0c0:3:d0::c8:f001)
2021-07-13 16:29:14 +0200synthmeat(~synthmeat@user/synthmeat)
2021-07-13 16:29:49 +0200welterde(welterde@thinkbase.srv.welterde.de) (Client Quit)
2021-07-13 16:29:57 +0200welterde(welterde@thinkbase.srv.welterde.de)
2021-07-13 16:31:06 +0200liskin(~liskin@ackle.nomi.cz) (Client Quit)
2021-07-13 16:31:15 +0200liskin(~liskin@ackle.nomi.cz)
2021-07-13 16:32:41 +0200fendor(~fendor@178.115.59.187.wireless.dyn.drei.com) (Remote host closed the connection)
2021-07-13 16:32:48 +0200liskin(~liskin@ackle.nomi.cz) (Changing host)
2021-07-13 16:32:48 +0200liskin(~liskin@xmonad/liskin)
2021-07-13 16:33:49 +0200fendor(~fendor@178.115.59.187.wireless.dyn.drei.com)
2021-07-13 16:36:44 +0200xlei(znc@pool-68-129-84-118.nycmny.fios.verizon.net)
2021-07-13 16:36:51 +0200img(~img@user/img)
2021-07-13 16:37:35 +0200warnz(~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net) (Remote host closed the connection)
2021-07-13 16:41:22 +0200Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2021-07-13 16:43:04 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-07-13 16:46:47 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-13 16:50:09 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-13 16:51:00 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-13 17:00:37 +0200zinczdleaf
2021-07-13 17:00:37 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2021-07-13 17:05:43 +0200 <guibou> I'm wondering about "full lazyness", CAF and memoization function. If you have a 'memo' function, such as the one available in the hackage package 'memoize' or 'uglymemo'. If you use it like: myFunctionMemo = memo f, it works, but if you use it like: myFunctionMemo s = memo f s, it may not works, unless GHC "floats" "memo f" out. All of the "pure" memoization library I know are based on this fact.
2021-07-13 17:05:49 +0200 <guibou> However, is this guaranteed and if yes, why? (pointers to the right part of documentation highly appreciated).
2021-07-13 17:07:34 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2021-07-13 17:09:39 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Client Quit)
2021-07-13 17:10:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 17:10:48 +0200 <guibou> (the keywords I do have in mind are related to "full lazyness", "CAF", "fully/partially saturated", but nothing precise enough in order to find details about this behavior.
2021-07-13 17:12:06 +0200derelict(~derelict@user/derelict)
2021-07-13 17:12:30 +0200jippiedoe(~david@145.107.129.65) (Ping timeout: 272 seconds)
2021-07-13 17:12:54 +0200liskin(~liskin@xmonad/liskin) (Quit: liskin)
2021-07-13 17:13:02 +0200liskin(~liskin@xmonad/liskin)
2021-07-13 17:13:33 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-07-13 17:13:48 +0200juhp(~juhp@128.106.188.66)
2021-07-13 17:15:33 +0200Pickchea(~private@user/pickchea)
2021-07-13 17:16:18 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 272 seconds)
2021-07-13 17:16:41 +0200mr-red(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-07-13 17:17:04 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 256 seconds)
2021-07-13 17:17:21 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-07-13 17:19:02 +0200chomwitt(~Pitsikoko@2a02:587:dc04:e00:12c3:7bff:fe6d:d374)
2021-07-13 17:19:03 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-13 17:20:28 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-13 17:26:47 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2021-07-13 17:28:02 +0200mr-red(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-13 17:28:56 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-07-13 17:29:51 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 255 seconds)
2021-07-13 17:29:55 +0200rostero(uid236576@id-236576.tooting.irccloud.com)
2021-07-13 17:30:08 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-07-13 17:30:21 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2021-07-13 17:32:14 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-13 17:33:26 +0200ukari(~ukari@user/ukari)
2021-07-13 17:34:51 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-07-13 17:36:37 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2021-07-13 17:37:00 +0200 <lechner> Hi, Haskell is so much better than Java! "return type polymorphism" https://joyofhaskell.com/posts/2017-03-15-typeclasses-in-translation.html
2021-07-13 17:37:52 +0200hexfive(~eric@50.35.83.177)
2021-07-13 17:38:36 +0200cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2021-07-13 17:38:45 +0200cheater(~Username@user/cheater)
2021-07-13 17:40:09 +0200 <dsal> modern idiomatic java is the worst thing I've had to deal with.
2021-07-13 17:40:59 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-07-13 17:41:06 +0200jespada(~jespada@90.254.247.46) (Ping timeout: 255 seconds)
2021-07-13 17:42:18 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2021-07-13 17:43:16 +0200jespada(~jespada@90.254.247.46)
2021-07-13 17:43:43 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-13 17:46:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 17:51:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-13 17:52:30 +0200thecoder(~mrrobot@static-47-206-93-60.tamp.fl.frontiernet.net) (Quit: leaving)
2021-07-13 17:53:11 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net)
2021-07-13 17:54:46 +0200stevenxl(~stevenlei@66.63.167.105) (Quit: leaving)
2021-07-13 17:55:13 +0200 <systemfault> You need more PHP in your life then :)
2021-07-13 17:57:21 +0200jolly(~jolly@208.180.97.158)
2021-07-13 17:59:08 +0200 <monochrom> I find higher-kind polymorphism even nicer. I.e., you can generalize from "Maybe Int" and "List Int" to "f Int".
2021-07-13 18:00:04 +0200lbseale(~lbseale@user/ep1ctetus)
2021-07-13 18:02:51 +0200zdleaf(~zinc@163.ip-51-254-203.eu) (Quit: )
2021-07-13 18:06:18 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 255 seconds)
2021-07-13 18:07:54 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-13 18:08:11 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2021-07-13 18:08:19 +0200ukari(~ukari@user/ukari)
2021-07-13 18:15:14 +0200zdleaf(~zdleaf@163.ip-51-254-203.eu)
2021-07-13 18:16:29 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-07-13 18:18:37 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2021-07-13 18:19:00 +0200qbt(~edun@user/edun) (Ping timeout: 272 seconds)
2021-07-13 18:20:23 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-07-13 18:21:04 +0200ec(~ec@gateway/tor-sasl/ec)
2021-07-13 18:25:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 18:29:16 +0200mikail_(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-13 18:38:05 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
2021-07-13 18:38:09 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
2021-07-13 18:41:01 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-07-13 18:41:46 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
2021-07-13 18:41:58 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
2021-07-13 18:42:26 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-13 18:45:24 +0200 <hendursaga> *cough* Clojure anyone?
2021-07-13 18:47:31 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-13 18:48:11 +0200dminuoso(~dminuoso@static.88-198-218-68.clients.your-server.de) (Changing host)
2021-07-13 18:48:11 +0200dminuoso(~dminuoso@user/dminuoso)
2021-07-13 18:49:53 +0200eggplantade(~Eggplanta@108.201.191.115)
2021-07-13 18:50:07 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Quit: -)
2021-07-13 18:54:27 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-07-13 18:55:52 +0200eight(~eight@user/eight)
2021-07-13 18:56:21 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-07-13 18:57:29 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-07-13 18:57:37 +0200shaprhops cheerfully
2021-07-13 18:59:56 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-13 19:02:03 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-07-13 19:03:12 +0200roconnor(~roconnor@host-45-78-194-41.dyn.295.ca) (Ping timeout: 265 seconds)
2021-07-13 19:03:20 +0200oxide(~lambda@user/oxide) (Ping timeout: 272 seconds)
2021-07-13 19:04:31 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Quit: -)
2021-07-13 19:04:48 +0200oxide(~lambda@user/oxide)
2021-07-13 19:07:30 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
2021-07-13 19:13:00 +0200jess(~jess@libera/staff/jess) ()
2021-07-13 19:14:11 +0200mikail_(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Quit: Leaving)
2021-07-13 19:19:06 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 276 seconds)
2021-07-13 19:19:17 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-13 19:20:32 +0200hseg(~gesh@185.120.126.10)
2021-07-13 19:22:05 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-07-13 19:24:37 +0200SimonWeiss[m](~weiss-dma@2001:470:69fc:105::bebd)
2021-07-13 19:27:29 +0200thonkpod(~thonkpod@user/thonkpod) (Ping timeout: 255 seconds)
2021-07-13 19:30:09 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 276 seconds)
2021-07-13 19:32:08 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-13 19:34:25 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 19:35:26 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-13 19:35:32 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-13 19:36:22 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-07-13 19:36:52 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-13 19:38:17 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-07-13 19:39:18 +0200cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2021-07-13 19:39:40 +0200cheater(~Username@user/cheater)
2021-07-13 19:39:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-07-13 19:41:12 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
2021-07-13 19:42:15 +0200eggplantade(~Eggplanta@108.201.191.115) (Remote host closed the connection)
2021-07-13 19:42:50 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-07-13 19:43:03 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 255 seconds)
2021-07-13 19:43:30 +0200Guest2168(~Guest21@187.83.249.216.dyn.smithville.net)
2021-07-13 19:44:23 +0200 <maerwald> why are Go projects always these huge things that do so much stuff that I don't even understand what they do
2021-07-13 19:44:37 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-13 19:44:56 +0200Guest9(~Guest9@103.250.139.121)
2021-07-13 19:44:59 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-13 19:46:23 +0200 <Guest2168> I have a cyclic module dependency where Foo imports Bar and Bar imports Foo which ghc doesn't like...but Bar was really just functions in Foo that I wanted to put in a separate file for clarity
2021-07-13 19:46:35 +0200azeem(~azeem@176.200.242.63)
2021-07-13 19:46:38 +0200 <Guest2168> breaking the dependency is painful, but is there a way to say "compile Foo.hs and Bar.hs as if you concatenated the source"?
2021-07-13 19:47:05 +0200 <maerwald> Guest2168: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/separate_compilation.html#how-to-c…
2021-07-13 19:47:08 +0200hrnz(~ulli@irc.plumbing) (Quit: das ist mir zu bld hier; bb)
2021-07-13 19:49:04 +0200 <monochrom> Turn on CPP and use #include?
2021-07-13 19:49:07 +0200 <dminuoso> Guest2168: So the short answer is: No. You either move things into the same source file, or you try to float definitions into separate files.
2021-07-13 19:49:13 +0200hrnz(~ulli@irc.plumbing)
2021-07-13 19:49:29 +0200Guest997(~Guest9@103.250.139.121)
2021-07-13 19:49:48 +0200hrnz(~ulli@irc.plumbing) (Client Quit)
2021-07-13 19:49:54 +0200 <dminuoso> Guest2168: The long answer is: boot modules sort of work, but they break in mysterious ways. Avoid circular imports.
2021-07-13 19:50:05 +0200 <dminuoso> (strange, that the long answer is shorter...)
2021-07-13 19:50:05 +0200 <maerwald> what's wrong with boot modules
2021-07-13 19:50:09 +0200 <hseg> still trying to derivevia a Category instance for a type ~ (m, a -> b) for m a monoid. problem is I don't see how to spell a type coercible with this one that eta-contracts away the a and b
2021-07-13 19:50:10 +0200 <Guest2168> thanks, yeah I saw that maerwald but it looks like it'll be a huge pain and might not work (I need to expose a lot of stuff that actually do depend on the other file)
2021-07-13 19:50:20 +0200 <maerwald> Guest2168: I use it, it works well
2021-07-13 19:50:24 +0200 <maerwald> GHC itself uses it
2021-07-13 19:50:42 +0200 <dminuoso> maerwald: Yes. Ask the the GHC core team what they think of it.
2021-07-13 19:50:49 +0200hrnz(~ulli@irc.plumbing)
2021-07-13 19:50:58 +0200 <maerwald> dminuoso: why? you claimed that it breaks :>
2021-07-13 19:51:03 +0200 <dminuoso> It does.
2021-07-13 19:51:05 +0200 <maerwald> so I'm asking you
2021-07-13 19:51:36 +0200 <monochrom> No, my answer is better and I am more right!
2021-07-13 19:51:36 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 255 seconds)
2021-07-13 19:51:38 +0200 <Guest2168> I guess the easy solution is to just write a script to concatenate the files pre-compile
2021-07-13 19:51:58 +0200 <maerwald> monochrom: yeah, except CPP breaks... all sorts of other tools (linters, formatters, ...)
2021-07-13 19:52:12 +0200hrnz(~ulli@irc.plumbing) (Client Quit)
2021-07-13 19:52:22 +0200azeem(~azeem@176.200.242.63) (Read error: Connection reset by peer)
2021-07-13 19:52:36 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-13 19:52:53 +0200 <hseg> guess I could go the hask route and define newtype Product f g a b = Product (f (Fst a) (Fst b), g (Snd a b)
2021-07-13 19:52:54 +0200Guest9(~Guest9@103.250.139.121) (Ping timeout: 276 seconds)
2021-07-13 19:52:57 +0200 <maerwald> but I also use CPP heavily
2021-07-13 19:52:58 +0200 <maerwald> so what
2021-07-13 19:53:21 +0200thonkpod(~thonkpod@user/thonkpod)
2021-07-13 19:55:56 +0200 <maerwald> we should have defined all our tools as microservices
2021-07-13 19:56:31 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-13 19:56:33 +0200 <maerwald> I mean, we're almost there, LSP, neovim, ...
2021-07-13 19:56:47 +0200 <maerwald> docker
2021-07-13 19:56:57 +0200 <maerwald> just send a HTTP request to ghc
2021-07-13 19:57:03 +0200 <int-e> maerwald: https://blog.davetcode.co.uk/post/21st-century-emulator/
2021-07-13 19:57:33 +0200hrnz(~ulli@irc.plumbing)
2021-07-13 19:57:39 +0200 <maerwald> unix is dead, now is HTTP and json APIs
2021-07-13 19:58:07 +0200 <Rembane> POSIX over REST?
2021-07-13 19:58:18 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-13 19:58:52 +0200derelict(~derelict@user/derelict) (Ping timeout: 245 seconds)
2021-07-13 19:59:26 +0200 <maerwald> but does it scale?
2021-07-13 20:01:22 +0200Pickchea(~private@user/pickchea) (Ping timeout: 272 seconds)
2021-07-13 20:02:04 +0200 <monochrom> The "is this actully possible?" section is, I don't know, interesting or more jokes. So, reinventing copy-on-write, out-of-order execution, and speculative execution but for microservices?
2021-07-13 20:02:31 +0200silverwhitefish(~hidden@47.202.102.10) (Remote host closed the connection)
2021-07-13 20:02:59 +0200 <Rembane> Sounds like modern JS
2021-07-13 20:03:00 +0200silverwhitefish(~hidden@47.202.102.10)
2021-07-13 20:03:09 +0200silverwhitefish(~hidden@47.202.102.10) (Client Quit)
2021-07-13 20:03:18 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
2021-07-13 20:03:53 +0200 <int-e> monochrom: it's absolutely a joke
2021-07-13 20:03:55 +0200silverwhitefish(~hidden@47.202.102.10)
2021-07-13 20:04:07 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-13 20:04:16 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
2021-07-13 20:05:52 +0200 <int-e> especially if you take "any instruction which changes the program counter" literally
2021-07-13 20:06:22 +0200qbt(~edun@user/edun)
2021-07-13 20:07:34 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-13 20:09:36 +0200vk3wtf(~doc@124.168.198.139) (Ping timeout: 272 seconds)
2021-07-13 20:11:05 +0200eight(~eight@user/eight) (Quit: leaving)
2021-07-13 20:11:06 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-13 20:12:09 +0200finsternis(~X@23.226.237.192)
2021-07-13 20:12:15 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-13 20:13:28 +0200 <yin[m]> i know there's a --warnings flag in ghcid that lets you run your function even with warnings, but is there a way to supress the warnings within ghcid (independently from ghci)?
2021-07-13 20:15:05 +0200derelict(~derelict@user/derelict)
2021-07-13 20:15:46 +0200 <tomsmeding> maerwald: surely not webscale
2021-07-13 20:17:36 +0200Bayes(~Bayes@user/bayes)
2021-07-13 20:18:15 +0200 <tomsmeding> yin[m]: tell ghcid to pass -w to ghci?
2021-07-13 20:18:19 +0200 <tomsmeding> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/flags.html#warnings
2021-07-13 20:18:52 +0200son0p(~ff@181.136.122.143)
2021-07-13 20:20:20 +0200 <Bayes> so I have a function that "stitches up" all other smaller functions, i.e. an end-user facing function taking several arguments that will run a whole things. What's the best practice in a functional programming here? have the front-end user to pass functions and call them sequentially in my code as needed, or maybe wrap around each of the inner
2021-07-13 20:20:20 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-13 20:20:20 +0200 <Bayes> functions sequentially one by one to always have a one-argument function?
2021-07-13 20:20:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 20:21:16 +0200 <dminuoso> Can you perhaps present this as code?
2021-07-13 20:21:29 +0200 <Bayes> I was really trying to do that and I have a mess in my mind :D
2021-07-13 20:21:47 +0200 <Bayes> I'm trying to write some pseudocode that's simple enough to show what I'm trying to do
2021-07-13 20:22:10 +0200 <dminuoso> Yes, even that would be helpful.
2021-07-13 20:23:17 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-13 20:23:47 +0200 <EvanR> there's the 'congiguration monoid' pattern where you have a type for the massive up front argument to your massive function. And you begin with default config and just tweak parts by monoiding
2021-07-13 20:23:49 +0200warnz(~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net)
2021-07-13 20:23:53 +0200 <EvanR> configuration monoid
2021-07-13 20:26:59 +0200 <Bayes> dminuoso https://paste.tomsmeding.com/efuXPVxV
2021-07-13 20:27:06 +0200 <Bayes> that's how my code looks like
2021-07-13 20:27:35 +0200 <Bayes> but I have this very strong intuition deep down me that tells me that's ugly and completely antifunctional programming
2021-07-13 20:27:49 +0200 <dminuoso> Bayes: Does the return type vary between each function?
2021-07-13 20:28:03 +0200 <dminuoso> I guess it sort of does, considering step_three
2021-07-13 20:29:08 +0200 <Bayes> we can assume for the moment that all functions have the same return type
2021-07-13 20:29:40 +0200 <dminuoso> If we can, then EvanR is right.
2021-07-13 20:29:57 +0200 <Bayes> as in any of these two will return the same type: step_two_alt_a, step_two_alt_b
2021-07-13 20:30:18 +0200 <dminuoso> If not, you could perhaps use an indexed monad
2021-07-13 20:30:24 +0200 <dminuoso> Ah
2021-07-13 20:30:28 +0200 <Bayes> configuration monoid? that's cool will look it up
2021-07-13 20:30:35 +0200 <dminuoso> Bayes: but step1 might produce a different output?
2021-07-13 20:30:36 +0200 <EvanR> dunno if that's really what it's called
2021-07-13 20:30:36 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 276 seconds)
2021-07-13 20:31:13 +0200 <Bayes> yeah, step1 might produce a different output type than step2 and step3
2021-07-13 20:31:24 +0200 <EvanR> and yeah, it seems unweildy to do and at risk of becoming a terrible API like jQuery
2021-07-13 20:31:44 +0200 <dminuoso> Bayes: Are there clear stages that a user has to choce (say because first you have a bunch of (potentially parametrized) functions going from `A` to `B`, and then you have a bunch of (potentially parametrized) functions going from `B` to C`, and so forth?
2021-07-13 20:32:13 +0200 <hseg> ok, so I *can* just roll my own http://ix.io/3sTP, but it seems like there should be a standard solution for this
2021-07-13 20:32:14 +0200 <dminuoso> (Such that at some point you provide some initial A, and the users specification would give a sort of `A -> D` specification using your bunch of functions?
2021-07-13 20:32:23 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.0.1)
2021-07-13 20:32:50 +0200 <Bayes> yeah, in this case it's a "closed set" of options so you could enumerate a small-ish set of combinations
2021-07-13 20:33:13 +0200 <Bayes> EvanR oh I know my code is ... not nice
2021-07-13 20:33:17 +0200 <dminuoso> Bayes: I see. I would perhaps describe this with an IxState monad.
2021-07-13 20:33:37 +0200 <Bayes> EvanR is this what you mean by "configuration monoid" https://medium.com/@jonathangfischoff/the-partial-options-monoid-pattern-31914a71fc67 ?
2021-07-13 20:33:37 +0200 <dminuoso> This gives you a sort of imperative language, without having to explicitly tie "previous layers" into the function calls
2021-07-13 20:33:45 +0200 <dminuoso> Then you could simply do:
2021-07-13 20:34:02 +0200 <dminuoso> do { step1; step2 "foo"; step3 10 True }
2021-07-13 20:34:15 +0200 <dminuoso> And each step is an IxState action that changes the underlying state type
2021-07-13 20:34:28 +0200 <dminuoso> Then you can simply provide a bunch of combinators for the user to choose
2021-07-13 20:35:44 +0200Patternmaster(~georg@li1192-118.members.linode.com) (Remote host closed the connection)
2021-07-13 20:35:50 +0200 <Bayes> uhm that's not too different from what I'm doing, but just instead of taking the three functions in as arguments I'll get it all resolved for the end user
2021-07-13 20:37:22 +0200 <Bayes> so you have like three layers, the bottom layer with all the step functions, the middle layer with the function that stitch them up together, and the top layer which is just a bunch of one-line combinations
2021-07-13 20:41:21 +0200 <Bayes> thanks dminuoso
2021-07-13 20:41:30 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-13 20:41:38 +0200 <Bayes> I think this is enough to get me going
2021-07-13 20:41:55 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-13 20:46:00 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Remote host closed the connection)
2021-07-13 20:47:47 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-07-13 20:48:38 +0200 <hseg> any ideas how to get http://ix.io/3sTP from standard libraries?
2021-07-13 20:51:17 +0200cfricke(~cfricke@user/cfricke)
2021-07-13 20:52:25 +0200 <yin[m]> apparently not
2021-07-13 20:52:32 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net)
2021-07-13 20:53:05 +0200 <yin[m]> is notElem more performant than (not . elem) or something? hlint is really picky with it
2021-07-13 20:53:19 +0200 <maerwald> no, hlint is just annoying
2021-07-13 20:53:34 +0200 <kilolympus> I always wondered the same for concatMap and (concat . map)
2021-07-13 20:54:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-07-13 20:56:22 +0200eight(~eight@user/eight)
2021-07-13 20:56:22 +0200eight(~eight@user/eight) (Client Quit)
2021-07-13 20:56:41 +0200 <EvanR> in haskell you get used to such 'spelling differences' not mattering. Then you go back to the real world and shake your head
2021-07-13 20:59:25 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net)
2021-07-13 21:01:21 +0200Bayes(~Bayes@user/bayes) (Quit: Connection closed)
2021-07-13 21:05:04 +0200zopsi_zopsi
2021-07-13 21:06:01 +0200 <zzz> kilolympus: concatMap can be much more efficient in some cases
2021-07-13 21:06:18 +0200 <zzz> it's the reason it exists
2021-07-13 21:07:37 +0200 <zzz> i can't think of any structure for which notElem would have an advantage, but for concatMap there are many
2021-07-13 21:07:50 +0200 <Rembane> zzz: Do you have any concrete examples for concatMap?
2021-07-13 21:08:11 +0200derelict(~derelict@user/derelict) (Quit: WeeChat 3.2)
2021-07-13 21:08:41 +0200 <monochrom> hlint is nowhere remotely close to C lint. Don't be fooled by the name.
2021-07-13 21:08:47 +0200jess(~jess@libera/staff/jess)
2021-07-13 21:09:29 +0200prite(~pritam@user/pritambaral)
2021-07-13 21:09:30 +0200 <monochrom> C lint notices objectively probable mistakes. hlint is just one person's personal preference.
2021-07-13 21:11:04 +0200 <monochrom> What you're seeing is a version of First World Problem.
2021-07-13 21:11:32 +0200 <zzz> Rembane: concatMap can benefit from foldr/build fusion
2021-07-13 21:11:54 +0200 <hseg> nm, was overengineering something that would require quite a bit more work than it's worth
2021-07-13 21:12:04 +0200 <monochrom> C allows you to make a mistake like "if (x = y) { ... }" where it is highly probable you meant "x == y". A tool that catches those is helpful.
2021-07-13 21:12:14 +0200 <hseg> welp. there goes half an hour's work
2021-07-13 21:13:06 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
2021-07-13 21:13:16 +0200 <monochrom> In Haskell, you can't make that kind of mistakes, it's already a compiler error. So, people get bored and start picking on personal style like (1 +) vs (\x -> 1 + x).
2021-07-13 21:14:11 +0200 <monochrom> When hlint says "why not foo . bar" my reply is "why don't you shut up"
2021-07-13 21:14:35 +0200Pickchea(~private@user/pickchea)
2021-07-13 21:15:26 +0200 <Rembane> zzz: Why can't concat . map do that?
2021-07-13 21:15:40 +0200 <monochrom> The only reason I am so upset is that there was once upon a time a scenerio forced hlint on me. We had an hpaste.org which forced htlint on every paste.
2021-07-13 21:16:07 +0200 <zzz> Rembane: also think about some kinds of trees where union requires a lot of reordering~
2021-07-13 21:16:33 +0200 <Rembane> zzz: That's true, and then those trees have implemented their own Foldable instance I guess.
2021-07-13 21:17:20 +0200 <monochrom> You can imagine a scenerio that a beginner asks about lambda examples, I posted an example like (\x -> 1 + x) on hpaste.org, and hlint should shut the **** up because this is educational code, not meant to be code-golfed.
2021-07-13 21:17:37 +0200qbt(~edun@user/edun) (Ping timeout: 245 seconds)
2021-07-13 21:18:55 +0200 <monochrom> In Haskell if you use "ghc -Wall" you have already got more lint than you ever need.
2021-07-13 21:20:55 +0200Guest1825(~Guest18@70.109.128.127)
2021-07-13 21:21:36 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 255 seconds)
2021-07-13 21:21:39 +0200 <zzz> Rembane: https://stackoverflow.com/questions/27570154/difference-between-concatmap-f-xs-and-concat-map-f-xs
2021-07-13 21:21:56 +0200 <Rembane> zzz: Thank you!
2021-07-13 21:22:57 +0200Guest997(~Guest9@103.250.139.121) (Ping timeout: 255 seconds)
2021-07-13 21:23:13 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-13 21:24:00 +0200 <zzz> i remember tripping on concatMap when i was a beginner and now i'm finaly able to follow this rabbit hole years later
2021-07-13 21:26:13 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-13 21:26:29 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-13 21:26:44 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 21:26:57 +0200 <yin[m]> quick notice: matrix bridge is not working
2021-07-13 21:27:21 +0200 <yin[m]> last message here is from 14:38
2021-07-13 21:28:34 +0200warnz(~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net) (Remote host closed the connection)
2021-07-13 21:29:02 +0200desophos(~desophos@2601:249:1680:a570:489c:f364:abf0:5de7)
2021-07-13 21:29:33 +0200 <Profpatsch> monochrom: https://gist.github.com/Profpatsch/5a41d0283755d573511b08c01ff40148
2021-07-13 21:30:22 +0200alx741(~alx741@186.178.108.22) (Ping timeout: 256 seconds)
2021-07-13 21:30:25 +0200polykernel(~polykerne@user/polykernel) (Read error: Connection reset by peer)
2021-07-13 21:30:25 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Write error: Connection reset by peer)
2021-07-13 21:30:25 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79) (Write error: Connection reset by peer)
2021-07-13 21:30:25 +0200jaror[m](~jaror@2001:470:69fc:105::265) (Read error: Connection reset by peer)
2021-07-13 21:30:26 +0200cdepillabout[m](~cdepillab@2001:470:69fc:105::3d3) (Read error: Connection reset by peer)
2021-07-13 21:30:26 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b) (Read error: Connection reset by peer)
2021-07-13 21:30:26 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f) (Read error: Connection reset by peer)
2021-07-13 21:30:26 +0200SimonWeiss[m](~weiss-dma@2001:470:69fc:105::bebd) (Read error: Connection reset by peer)
2021-07-13 21:30:26 +0200inkbottle[m](~inkbottle@2001:470:69fc:105::2ff5) (Read error: Connection reset by peer)
2021-07-13 21:30:26 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8) (Write error: Connection reset by peer)
2021-07-13 21:30:26 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef) (Read error: Connection reset by peer)
2021-07-13 21:30:26 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Write error: Connection reset by peer)
2021-07-13 21:30:26 +0200Soft(~soft-matr@2001:470:69fc:105::c75) (Write error: Connection reset by peer)
2021-07-13 21:30:26 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) (Write error: Connection reset by peer)
2021-07-13 21:30:26 +0200kadoban(~kadoban@user/kadoban) (Write error: Connection reset by peer)
2021-07-13 21:30:26 +0200RohitGoswami[m](~rgoswamim@2001:470:69fc:105::16cc) (Read error: Connection reset by peer)
2021-07-13 21:30:26 +0200ecameron[m](~ecameronm@2001:470:69fc:105::35df) (Read error: Connection reset by peer)
2021-07-13 21:30:26 +0200Deewiant(~deewiant@2001:470:69fc:105::2fd3) (Read error: Connection reset by peer)
2021-07-13 21:30:26 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4) (Read error: Connection reset by peer)
2021-07-13 21:30:27 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Read error: Connection reset by peer)
2021-07-13 21:30:27 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (Read error: Connection reset by peer)
2021-07-13 21:30:27 +0200jophish(~jophish@2001:470:69fc:105::670) (Write error: Connection reset by peer)
2021-07-13 21:30:27 +0200Guest2833(~sylveonma@2001:470:69fc:105::2d95) (Read error: Connection reset by peer)
2021-07-13 21:30:27 +0200rednaZ[m](~r3dnazmat@2001:470:69fc:105::ba70) (Read error: Connection reset by peer)
2021-07-13 21:30:27 +0200bb010g(~bb010g@2001:470:69fc:105::9a5) (Write error: Connection reset by peer)
2021-07-13 21:30:27 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Write error: Connection reset by peer)
2021-07-13 21:30:27 +0200PotatoHatsue(~berberman@2001:470:69fc:105::b488) (Write error: Connection reset by peer)
2021-07-13 21:30:28 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d) (Read error: Connection reset by peer)
2021-07-13 21:30:28 +0200gxt(~gxt@2001:470:69fc:105::3513) (Read error: Connection reset by peer)
2021-07-13 21:30:28 +0200ormaaj(~ormaaj@user/ormaaj) (Read error: Connection reset by peer)
2021-07-13 21:30:28 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Read error: Connection reset by peer)
2021-07-13 21:30:28 +0200aveltras[m](~aveltrasm@2001:470:69fc:105::3ef9) (Read error: Connection reset by peer)
2021-07-13 21:30:28 +0200fakehacker[m](~fakehacke@2001:470:69fc:105::b5f0) (Read error: Connection reset by peer)
2021-07-13 21:30:28 +0200Ollie[m](~ollieocha@2001:470:69fc:105::41a5) (Read error: Connection reset by peer)
2021-07-13 21:30:28 +0200sm(~sm@plaintextaccounting/sm) (Read error: Connection reset by peer)
2021-07-13 21:30:28 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22) (Read error: Connection reset by peer)
2021-07-13 21:30:28 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Write error: Connection reset by peer)
2021-07-13 21:30:28 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd) (Write error: Connection reset by peer)
2021-07-13 21:30:28 +0200siraben(~siraben@user/siraben) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Write error: Connection reset by peer)
2021-07-13 21:30:29 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2) (Write error: Connection reset by peer)
2021-07-13 21:30:29 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200yin[m](~zwromatri@2001:470:69fc:105::1d4) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200bitonic(~bitonic@2001:470:69fc:105::1812) (Write error: Connection reset by peer)
2021-07-13 21:30:29 +0200Aleci[m](~alecilibr@2001:470:69fc:105::32e7) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200carmysilna(~brightly-@2001:470:69fc:105::2190) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284) (Write error: Connection reset by peer)
2021-07-13 21:30:29 +0200ixlun(~ixlun@2001:470:69fc:105::41b3) (Read error: Connection reset by peer)
2021-07-13 21:30:29 +0200sridonhiatus[m](~sridmatri@2001:470:69fc:105::1c2) (Read error: Connection reset by peer)
2021-07-13 21:30:30 +0200unclechu(~unclechu@2001:470:69fc:105::354) (Read error: Connection reset by peer)
2021-07-13 21:30:30 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a) (Read error: Connection reset by peer)
2021-07-13 21:30:30 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f) (Read error: Connection reset by peer)
2021-07-13 21:30:31 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5) (Read error: Connection reset by peer)
2021-07-13 21:30:31 +0200boxscape(~boxscape@user/boxscape) (Write error: Connection reset by peer)
2021-07-13 21:30:31 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae) (Read error: Connection reset by peer)
2021-07-13 21:30:31 +0200dminuoso[m](~dminuosom@2001:470:69fc:105::33bb) (Read error: Connection reset by peer)
2021-07-13 21:30:31 +0200octeep[m]1(~octeepmoc@2001:470:69fc:105::695e) (Write error: Connection reset by peer)
2021-07-13 21:30:31 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Write error: Connection reset by peer)
2021-07-13 21:30:33 +0200 <Profpatsch> I *think* there are some useful lints, but you have to disable a whole lot of “redundant bracket” bullshit before you get anything resembling sanity
2021-07-13 21:30:58 +0200 <Profpatsch> It’s kinda useful if you want to forbid functions from being used in favor of wrappers
2021-07-13 21:31:47 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-13 21:31:57 +0200xff0x(~xff0x@2001:1a81:5314:1800:204a:df94:d24b:de67) (Ping timeout: 255 seconds)
2021-07-13 21:32:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-07-13 21:32:40 +0200Pickchea(~private@user/pickchea) (Ping timeout: 258 seconds)
2021-07-13 21:33:08 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Remote host closed the connection)
2021-07-13 21:33:21 +0200pavonia(~user@user/siracusa)
2021-07-13 21:33:37 +0200xff0x(~xff0x@185.65.135.235)
2021-07-13 21:34:40 +0200 <monochrom> I am sympathetic to forking hlint to delete the bad 90%.
2021-07-13 21:35:54 +0200 <Hecate> relude's hlint configuration file is indeed a very good example of how you can instrumentalise hlint to enforce conventions/wrappers
2021-07-13 21:35:57 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds)
2021-07-13 21:39:03 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
2021-07-13 21:39:17 +0200 <Profpatsch> monochrom: same
2021-07-13 21:43:07 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-13 21:43:22 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Ping timeout: 246 seconds)
2021-07-13 21:43:24 +0200alx741(~alx741@186.178.109.32)
2021-07-13 21:45:10 +0200 <maerwald> Hecate: I feel that's excessive
2021-07-13 21:45:35 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
2021-07-13 21:45:38 +0200 <maerwald> it feels like golfing
2021-07-13 21:45:48 +0200Hanicef(~hanicef@90-229-213-50-no68.tbcn.telia.com)
2021-07-13 21:47:20 +0200 <maerwald> or maybe it's because I like it when people break the rules...
2021-07-13 21:47:39 +0200 <maerwald> so yeah, I have an hlint config too and I encourage people to ignore it
2021-07-13 21:48:18 +0200Pickchea(~private@user/pickchea)
2021-07-13 21:49:15 +0200 <maerwald> let me write things that are less concise... why is it so bad?
2021-07-13 21:49:37 +0200 <Profpatsch> I can understand for functions that are known bad
2021-07-13 21:49:42 +0200xff0x(~xff0x@185.65.135.235) (Ping timeout: 245 seconds)
2021-07-13 21:49:42 +0200 <Profpatsch> e.g. a warning for foldl
2021-07-13 21:49:46 +0200 <maerwald> true
2021-07-13 21:49:55 +0200 <Profpatsch> or for stuff that is bad complexity
2021-07-13 21:50:24 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Ping timeout: 268 seconds)
2021-07-13 21:50:27 +0200 <Profpatsch> you could make an argument for throwing a warning if somebody tries to concat []s
2021-07-13 21:50:45 +0200 <Profpatsch> “this is O(n) in every concatenation to you want to continue y/n”
2021-07-13 21:50:49 +0200 <maerwald> but most of the interesting stuff needs a more powerful linter, which hlint is not... I think stan can deliver more. Like writing actual context aware rules?
2021-07-13 21:51:04 +0200 <monochrom> My personal coding goal is always simplicity and considering the audience. Concision is just a sometimes side effect.
2021-07-13 21:51:05 +0200 <Profpatsch> but yeah, hlint doesn’t go very fatr
2021-07-13 21:51:17 +0200 <Profpatsch> monochrom: amen brother
2021-07-13 21:51:21 +0200 <Profpatsch> *break starts*
2021-07-13 21:51:37 +0200 <maerwald> I mean, I've written custom Java rules with SonarQube 8 years ago or so. It's actually amazing.
2021-07-13 21:51:46 +0200chomwitt(~Pitsikoko@2a02:587:dc04:e00:12c3:7bff:fe6d:d374) (Quit: Leaving)
2021-07-13 21:51:49 +0200xff0x(~xff0x@2001:1a81:5314:1800:204a:df94:d24b:de67)
2021-07-13 21:52:01 +0200 <maerwald> If I compare that with what we have in haskell, it's laughable.
2021-07-13 21:52:04 +0200 <monochrom> For a beginner I am very happy to even write "map (\x -> Just x) [1,2,3]" if they like it better.
2021-07-13 21:52:12 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 245 seconds)
2021-07-13 21:52:39 +0200 <Profpatsch> I feel like hlint is partially a teaching tool? But not super useful in production by default
2021-07-13 21:52:44 +0200 <monochrom> Fun fact: In SML you have to write "\x -> SOME x" for that example, you have no choice.
2021-07-13 21:53:02 +0200 <maerwald> Profpatsch: except many companies have it in their CI
2021-07-13 21:53:05 +0200 <Profpatsch> where you usually don’t want to Eta reduce for readability’s sake
2021-07-13 21:53:38 +0200 <monochrom> err of course it's also "fun x => SOME x" in SML.
2021-07-13 21:54:23 +0200 <maerwald> Profpatsch: https://git.io/JCmfu
2021-07-13 21:55:42 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-13 21:55:57 +0200 <Profpatsch> maerwald: uh, they don’t even disable many things
2021-07-13 21:56:15 +0200 <Profpatsch> at least redundant bracket and do
2021-07-13 21:56:17 +0200 <Profpatsch> but not even $
2021-07-13 21:56:19 +0200 <maerwald> Profpatsch: stuff is sometimes disabled in the source code
2021-07-13 21:56:30 +0200 <Profpatsch> would never enforce in CI
2021-07-13 21:56:37 +0200 <Profpatsch> this is like these things that check the formatter on CI
2021-07-13 21:56:40 +0200 <Profpatsch> even worse
2021-07-13 21:56:45 +0200_73(~user@pool-96-252-123-136.bstnma.fios.verizon.net)
2021-07-13 21:56:45 +0200 <davean> Yah I think hlint's rules are insane personally.
2021-07-13 21:56:50 +0200 <Profpatsch> Just make everybody set it up in their editor
2021-07-13 21:57:00 +0200 <davean> I think hlint clean code is actively harmful
2021-07-13 21:57:06 +0200 <Profpatsch> hls has ormolu integration by default
2021-07-13 21:57:08 +0200 <Profpatsch> just use that
2021-07-13 21:57:15 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-13 21:57:43 +0200 <monochrom> And now for the counterpart in llvm and clang: By default, they warn you when you use recursion.
2021-07-13 21:57:48 +0200 <davean> Uh, ormolu?
2021-07-13 21:58:01 +0200 <maerwald> monochrom: xD
2021-07-13 21:58:02 +0200 <Profpatsch> https://github.com/tweag/ormolu
2021-07-13 21:58:11 +0200 <Profpatsch> Mark has really thought about this
2021-07-13 21:58:14 +0200 <Profpatsch> there is nothing to add
2021-07-13 21:58:21 +0200 <monochrom> or perhaps I mean just llvm's C++ style checker.
2021-07-13 21:58:27 +0200 <Profpatsch> if you don’t like it, don’t complain, just use it and be happy you never have to indent shit againt
2021-07-13 21:58:30 +0200 <Profpatsch> -t
2021-07-13 21:58:31 +0200 <davean> Profpatsch: I'm familiar with it and dislike it
2021-07-13 21:58:33 +0200ph88(~ph88@2a02:8109:9e00:7e5c:146a:5c4b:109:2ce4)
2021-07-13 21:58:40 +0200 <davean> Profpatsch: I'm not google, and theres a reason I'm not google
2021-07-13 21:58:52 +0200 <Profpatsch> davean: see, you’re a special flower
2021-07-13 21:58:56 +0200 <monochrom> I prefer fourmolu.
2021-07-13 21:58:58 +0200 <davean> Profpatsch: no I don't think I am
2021-07-13 21:59:04 +0200 <davean> Profpatsch: layout leads reading
2021-07-13 21:59:11 +0200 <desophos> is it wrong that i prefer brittany
2021-07-13 21:59:12 +0200lavaman(~lavaman@98.38.249.169)
2021-07-13 21:59:13 +0200 <Profpatsch> your syntax is so important you want people to spend time on it
2021-07-13 21:59:27 +0200 <maerwald> I'm questioning that formatters add any value. I used to think so too, but I think it's just all OCD or the belief that consistency matters
2021-07-13 21:59:31 +0200 <davean> Profpatsch: No I want to speed understanding of the code
2021-07-13 21:59:45 +0200 <davean> layout shows relation
2021-07-13 21:59:46 +0200 <Profpatsch> davean: yes, and consistently indented code is the easiest to read
2021-07-13 21:59:50 +0200ukari(~ukari@user/ukari) (Ping timeout: 256 seconds)
2021-07-13 21:59:55 +0200 <maerwald> I question that
2021-07-13 21:59:56 +0200 <davean> Profpatsch: No, semanticly indented code is easier
2021-07-13 21:59:57 +0200 <Profpatsch> it will always give you a normalized layout
2021-07-13 22:00:08 +0200 <Profpatsch> davean: it is semantically indentet
2021-07-13 22:00:08 +0200 <davean> Profpatsch: yes, which will lose all the insite into what goes toegehr
2021-07-13 22:00:11 +0200 <Profpatsch> *d
2021-07-13 22:00:16 +0200 <davean> no, its syntacticly indented
2021-07-13 22:00:18 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 276 seconds)
2021-07-13 22:00:21 +0200 <monochrom> Local consistency matters. Global consistency? Would you even notice?
2021-07-13 22:00:22 +0200 <davean> Those are VERY different
2021-07-13 22:00:25 +0200Erutuon(~Erutuon@user/erutuon) (Client Quit)
2021-07-13 22:00:37 +0200 <Profpatsch> davean: you mean newlines between lines?
2021-07-13 22:00:59 +0200 <davean> no, though that can come into it
2021-07-13 22:01:06 +0200 <Profpatsch> davean: I mean, give an example
2021-07-13 22:01:09 +0200 <Profpatsch> I don’t know of one
2021-07-13 22:01:22 +0200 <maerwald> monochrom: if you have sudden changes in indenting/style within a single function, it's a good sign that you want to read blame/git log of said function. Why remove that information?
2021-07-13 22:01:31 +0200 <davean> Like aligning parallel parts of code to show the relation between the lines
2021-07-13 22:01:57 +0200 <Profpatsch> davean: you mean aligning symbools?
2021-07-13 22:02:01 +0200 <davean> Profpatsch: a fairly trivial one would be to make all the "action" parts of a conditional structure at the same depth so you can scan them
2021-07-13 22:02:04 +0200 <dminuoso> I only use stylish-haskell for a single thing: sorting and formatting imports, and that's because its formatting style coincides with mine. So this tool assists me.
2021-07-13 22:02:09 +0200 <Profpatsch> Sorry, but that’s never worth it
2021-07-13 22:02:23 +0200 <davean> I said it was trivial
2021-07-13 22:02:35 +0200 <Profpatsch> It will mess with line diffs, it will mess with automatic formatters, which are just extreme time and brain cycle savers
2021-07-13 22:02:35 +0200 <davean> You wanted an example that fits in IRC though
2021-07-13 22:02:46 +0200Hanicef(~hanicef@90-229-213-50-no68.tbcn.telia.com) (Quit: leaving)
2021-07-13 22:02:47 +0200 <Profpatsch> davean: nah, can be a paste if you want
2021-07-13 22:02:48 +0200 <davean> So what about diffs? we read code, diffs are an implimentation detail
2021-07-13 22:02:50 +0200 <maerwald> coding isn't just talking to the PC, it's talking to each other and expressing yourself... all of those convey information. Inconsistency conveys information, personaly style conveys information
2021-07-13 22:02:55 +0200nuncanada(~dude@179.235.162.215)
2021-07-13 22:02:59 +0200 <Profpatsch> davean: I read more diffs than code
2021-07-13 22:03:04 +0200nuncanada(~dude@179.235.162.215) (Remote host closed the connection)
2021-07-13 22:03:09 +0200 <Profpatsch> as does anybody working in a team
2021-07-13 22:03:17 +0200 <maerwald> If your goal is to read "as fast as possible", then I'm not even sure that's a good goal
2021-07-13 22:03:24 +0200 <Profpatsch> maerwald: that’s a strawman
2021-07-13 22:03:34 +0200 <davean> You should understand as fast as possible, not read as fast as possible
2021-07-13 22:03:53 +0200 <Profpatsch> ormolu helps both, speed of expressing ideas and speed of understanding code
2021-07-13 22:04:02 +0200 <Profpatsch> not reading code, understanding code
2021-07-13 22:04:05 +0200 <davean> no, ormolu makes code a mush
2021-07-13 22:04:22 +0200 <maerwald> I've looked at ormolu formatted code and it looked stripped of information
2021-07-13 22:04:22 +0200 <Profpatsch> have you … written production code?
2021-07-13 22:04:30 +0200 <dminuoso> Profpatsch: You can assume they have.
2021-07-13 22:04:32 +0200 <davean> Yes, of course I have
2021-07-13 22:04:37 +0200 <maerwald> a bit :D
2021-07-13 22:04:48 +0200 <[exa]> there's fourmolu to fix some of ormolu problems
2021-07-13 22:04:50 +0200 <davean> Profpatsch: given you're in this community, I expect i've writen code you use
2021-07-13 22:05:07 +0200juhp(~juhp@128.106.188.66) (Ping timeout: 245 seconds)
2021-07-13 22:05:10 +0200 <dminuoso> I tend to agree with davean. Indenting is highly contextual - a blanket rule cannot reasonably assist understanding in general, because the meaning of what code even means is very.. well.. contextual.
2021-07-13 22:05:18 +0200 <Profpatsch> davean: I mean a library is usually written by one or two people
2021-07-13 22:05:24 +0200 <[exa]> still, a proper set oneliners never requires formatting.
2021-07-13 22:05:51 +0200 <maerwald> Profpatsch: I've worked at a 300 modules proprietary project. We didn't have a formatter and it was mostly anarchy wrt style. It never imposed a problem.
2021-07-13 22:06:08 +0200 <Profpatsch> maerwald: have you, like, tried it out in seriousness?
2021-07-13 22:06:15 +0200 <maerwald> tried what
2021-07-13 22:06:17 +0200 <Profpatsch> Or just looked at it for a few minutes and decided against it?
2021-07-13 22:06:24 +0200 <Profpatsch> ormolu, or any formatter without configuration
2021-07-13 22:06:25 +0200 <maerwald> formatters? Yes, all.
2021-07-13 22:06:31 +0200 <davean> Profpatsch: formaters are for where you don't have quality contributors - specificly like google
2021-07-13 22:06:44 +0200 <Profpatsch> okay, I’ll stop now
2021-07-13 22:06:47 +0200 <davean> It patches over horrid team management
2021-07-13 22:06:50 +0200 <dminuoso> Profpatsch: Formatters begin with a big problem. If I want to communicate something with a particular style that your formatter disagrees with, what do we do now?
2021-07-13 22:06:53 +0200 <maerwald> I got stuck with brittany and opened a bazillion issues on the issue tracker, until I gave up
2021-07-13 22:06:56 +0200 <Profpatsch> The takes are getting worse lol
2021-07-13 22:07:10 +0200 <Profpatsch> syntax is the least important part, but people like to bikeshed
2021-07-13 22:07:10 +0200 <maerwald> And now I'm free of formatters and it feels good
2021-07-13 22:07:16 +0200 <davean> Profpatsch: I'm quite serious about where it comes from
2021-07-13 22:07:24 +0200 <Profpatsch> since it touches identity and strongly held beliefs
2021-07-13 22:07:32 +0200 <davean> No, its not about identity
2021-07-13 22:08:00 +0200 <maerwald> I identify as an ormolu?
2021-07-13 22:08:17 +0200juhp(~juhp@128.106.188.66)
2021-07-13 22:09:50 +0200 <Profpatsch> I stick with “use ormolu and don’t complain, since it’s not worth the overhead of aligning things by hand”
2021-07-13 22:10:13 +0200 <dminuoso> Does the ormolu style always exactly indent it as you would have to communicate a particular code structure?
2021-07-13 22:10:24 +0200 <dminuoso> If you answer with yes, then the tool seems genuinely useful.
2021-07-13 22:10:40 +0200 <maerwald> Profpatsch: well, I agree with you that there's something worse than formatters: PR discussions about formatting. These make me furious.
2021-07-13 22:11:00 +0200 <Profpatsch> dminuoso: I’ve written hundreds if not thousands of lines with it and I’ve never once had a problem with the indentation
2021-07-13 22:11:16 +0200 <davean> ... hundreads?
2021-07-13 22:11:22 +0200 <dminuoso> Profpatsch: That could perhaps just be indicative of you not caring what indention communicates, or what you could communicate with different styles.
2021-07-13 22:11:25 +0200 <davean> So you've barely used it?
2021-07-13 22:11:31 +0200 <maerwald> Especially because you have a limited focus capacity per day and then half of it is eaten up by formatting and style discussions, before you even manage to get to anything useful
2021-07-13 22:11:56 +0200 <davean> Theres more than 100 different things to lay out
2021-07-13 22:12:12 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-07-13 22:12:52 +0200ukari(~ukari@user/ukari)
2021-07-13 22:12:52 +0200 <dminuoso> As one example, I find myself using SPJ-style do-notation from time to time - in some situation it improves readability with nested do-blocks. But it's nothing I would argue "should be done always"
2021-07-13 22:12:56 +0200 <Profpatsch> davean: not really, a few dozen
2021-07-13 22:13:15 +0200 <dminuoso> Most of the time I find it noisy and distracting.
2021-07-13 22:13:21 +0200 <davean> Profpatsch: I can list a few dozen off the top of my head
2021-07-13 22:13:21 +0200acidjnk(~acidjnk@p200300d0c72b9557fc98475d99842c11.dip0.t-ipconnect.de)
2021-07-13 22:14:10 +0200 <davean> Profpatsch: we have more than a few dozen language extensions, and many introduce more than one piece of syntax
2021-07-13 22:14:49 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it)
2021-07-13 22:18:26 +0200 <[exa]> I often hope that tabs could be restored to align proper tabular code, like if you want elements of 2 lists below each other to be aligned for clarity
2021-07-13 22:18:45 +0200 <davean> [exa]: mmm, sadly tabs aren't reliable
2021-07-13 22:18:49 +0200 <davean> so sometimes we do it with spaces ...
2021-07-13 22:19:15 +0200 <maerwald> haskell with tabs and snake case, yay
2021-07-13 22:19:48 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 276 seconds)
2021-07-13 22:20:14 +0200 <dminuoso> maerwald: Hah, I have that!
2021-07-13 22:20:56 +0200chomwitt(~Pitsikoko@2a02:587:dc04:e00:12c3:7bff:fe6d:d374)
2021-07-13 22:22:33 +0200 <maerwald> end goal: build a haskell company where this style is mandatory
2021-07-13 22:23:09 +0200 <davean> maerwald: I think we should select the style of the name based on the modulus of the line its defined on
2021-07-13 22:23:20 +0200 <davean> and if you change the line number, you have to change the style.
2021-07-13 22:23:48 +0200 <maerwald> can we auto-format that please?
2021-07-13 22:23:59 +0200maerwaldwrites a patch for ormolu
2021-07-13 22:24:32 +0200dre(~dre@2001:8003:c932:c301:b299:b352:c4c4:74a1)
2021-07-13 22:25:08 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-07-13 22:25:37 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
2021-07-13 22:25:49 +0200 <shapr> Does anyone know when ghc 9.0.2 is likely to be released?
2021-07-13 22:26:05 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-13 22:26:17 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-13 22:26:41 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 265 seconds)
2021-07-13 22:29:55 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Ping timeout: 246 seconds)
2021-07-13 22:30:57 +0200prite(~pritam@user/pritambaral) (Ping timeout: 245 seconds)
2021-07-13 22:31:37 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-07-13 22:32:18 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-13 22:38:10 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
2021-07-13 22:39:30 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 256 seconds)
2021-07-13 22:42:51 +0200 <maerwald> shapr: https://gitlab.haskell.org/ghc/ghc/-/issues/19632
2021-07-13 22:42:55 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net)
2021-07-13 22:43:26 +0200 <shapr> maerwald: thanks!
2021-07-13 22:43:44 +0200 <maerwald> oh dear, none of the boxes are checked
2021-07-13 22:45:39 +0200 <tomsmeding> oh boy
2021-07-13 22:49:19 +0200xkuru(~xkuru@user/xkuru)
2021-07-13 22:52:37 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-13 22:52:56 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79)
2021-07-13 22:55:46 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds)
2021-07-13 22:58:01 +0200xkuru(~xkuru@user/xkuru) (Quit: Unvirtualizing)
2021-07-13 22:59:56 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-13 23:00:10 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-13 23:01:46 +0200 <koz> What's the QuantifiedConstraints version of MonadTrans? I.e. the one we 'should' have if QuantifiedConstraints existed at the time it was created.
2021-07-13 23:01:47 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22)
2021-07-13 23:02:01 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2021-07-13 23:02:01 +0200ac(~aloiscoch@2001:470:69fc:105::65)
2021-07-13 23:02:01 +0200sm(~sm@plaintextaccounting/sm)
2021-07-13 23:02:01 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd)
2021-07-13 23:02:13 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7)
2021-07-13 23:02:19 +0200jaror[m](~jaror@2001:470:69fc:105::265)
2021-07-13 23:02:19 +0200fgaz(~fgaz@2001:470:69fc:105::842)
2021-07-13 23:02:19 +0200peddie(~peddie@2001:470:69fc:105::25d)
2021-07-13 23:02:19 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284)
2021-07-13 23:02:19 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2)
2021-07-13 23:02:19 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db)
2021-07-13 23:02:19 +0200bb010g(~bb010g@2001:470:69fc:105::9a5)
2021-07-13 23:02:19 +0200Artem[m](~artemtype@2001:470:69fc:105::75b)
2021-07-13 23:02:19 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a)
2021-07-13 23:02:19 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e)
2021-07-13 23:02:19 +0200cdepillabout[m](~cdepillab@2001:470:69fc:105::3d3)
2021-07-13 23:02:19 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b)
2021-07-13 23:02:19 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f)
2021-07-13 23:02:19 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2021-07-13 23:02:19 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32)
2021-07-13 23:02:19 +0200kadoban(~kadoban@user/kadoban)
2021-07-13 23:02:19 +0200bitonic(~bitonic@2001:470:69fc:105::1812)
2021-07-13 23:02:19 +0200carmysilna(~brightly-@2001:470:69fc:105::2190)
2021-07-13 23:02:19 +0200jophish(~jophish@2001:470:69fc:105::670)
2021-07-13 23:02:19 +0200ericson2314(~ericson23@2001:470:69fc:105::70c)
2021-07-13 23:02:19 +0200PotatoHatsue(~berberman@2001:470:69fc:105::b488)
2021-07-13 23:02:19 +0200siraben(~siraben@user/siraben)
2021-07-13 23:02:19 +0200Deewiant(~deewiant@2001:470:69fc:105::2fd3)
2021-07-13 23:02:20 +0200unclechu(~unclechu@2001:470:69fc:105::354)
2021-07-13 23:02:20 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5)
2021-07-13 23:02:20 +0200unrooted(~unrooted@2001:470:69fc:105::a4a)
2021-07-13 23:02:20 +0200Aleci[m](~alecilibr@2001:470:69fc:105::32e7)
2021-07-13 23:02:20 +0200rednaZ[m](~r3dnazmat@2001:470:69fc:105::ba70)
2021-07-13 23:02:20 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2021-07-13 23:02:20 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef)
2021-07-13 23:02:20 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b)
2021-07-13 23:02:20 +0200inkbottle[m](~inkbottle@2001:470:69fc:105::2ff5)
2021-07-13 23:02:20 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda)
2021-07-13 23:02:20 +0200gxt(~gxt@2001:470:69fc:105::3513)
2021-07-13 23:02:20 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2021-07-13 23:02:20 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4)
2021-07-13 23:02:20 +0200boxscape(~boxscape@user/boxscape)
2021-07-13 23:02:20 +0200infinisil(~infinisil@2001:470:69fc:105::ff8)
2021-07-13 23:02:20 +0200ormaaj(~ormaaj@user/ormaaj)
2021-07-13 23:02:20 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56)
2021-07-13 23:02:20 +0200sridonhiatus[m](~sridmatri@2001:470:69fc:105::1c2)
2021-07-13 23:02:20 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2021-07-13 23:02:20 +0200polykernel(~polykerne@user/polykernel)
2021-07-13 23:02:25 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0)
2021-07-13 23:02:32 +0200ecameron[m](~ecameronm@2001:470:69fc:105::35df)
2021-07-13 23:02:32 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1)
2021-07-13 23:02:32 +0200Soft(~soft-matr@2001:470:69fc:105::c75)
2021-07-13 23:02:32 +0200RohitGoswami[m](~rgoswamim@2001:470:69fc:105::16cc)
2021-07-13 23:02:32 +0200yin[m](~zwromatri@2001:470:69fc:105::1d4)
2021-07-13 23:02:32 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f)
2021-07-13 23:02:32 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d)
2021-07-13 23:02:32 +0200jellz[m](~jellzmatr@2001:470:69fc:105::2daa)
2021-07-13 23:02:32 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8)
2021-07-13 23:02:32 +0200dminuoso[m](~dminuosom@2001:470:69fc:105::33bb)
2021-07-13 23:02:32 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae)
2021-07-13 23:02:32 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d)
2021-07-13 23:02:32 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-13 23:02:33 +0200octeep[m]1(~octeepmoc@2001:470:69fc:105::695e)
2021-07-13 23:02:33 +0200aveltras[m](~aveltrasm@2001:470:69fc:105::3ef9)
2021-07-13 23:02:33 +0200Ollie[m](~ollieocha@2001:470:69fc:105::41a5)
2021-07-13 23:02:33 +0200fakehacker[m](~fakehacke@2001:470:69fc:105::b5f0)
2021-07-13 23:02:33 +0200vbeatrice[m](~vbeatrice@2001:470:69fc:105::3ebf)
2021-07-13 23:02:33 +0200SimonWeiss[m](~weiss-dma@2001:470:69fc:105::bebd)
2021-07-13 23:02:33 +0200oak-(~oakuniver@2001:470:69fc:105::fcd)
2021-07-13 23:02:33 +0200ixlun(~ixlun@2001:470:69fc:105::41b3)
2021-07-13 23:02:34 +0200Sylveon(~sylveonma@2001:470:69fc:105::2d95)
2021-07-13 23:02:57 +0200SylveonGuest7801
2021-07-13 23:05:04 +0200_73(~user@pool-96-252-123-136.bstnma.fios.verizon.net) (ERC (IRC client for Emacs 27.2))
2021-07-13 23:05:57 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 245 seconds)
2021-07-13 23:06:08 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 256 seconds)
2021-07-13 23:08:21 +0200Guest1825(~Guest18@70.109.128.127) (Quit: Client closed)
2021-07-13 23:08:50 +0200Patternmaster(~georg@li1192-118.members.linode.com)
2021-07-13 23:11:52 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-13 23:12:49 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-13 23:12:55 +0200FixedPointDude(~FixedPoin@204.237.49.106)
2021-07-13 23:13:11 +0200 <FixedPointDude> hello, i have a horrible conjecture
2021-07-13 23:13:57 +0200 <koz> FixedPointDude: P vs NP is still undecided.
2021-07-13 23:14:22 +0200 <FixedPointDude> abusing types, let f 0 = id, f k = f k-1 fmap
2021-07-13 23:14:26 +0200 <FixedPointDude> (har)
2021-07-13 23:14:40 +0200 <FixedPointDude> so that f k = fmap fmap ... fmap, with k terms
2021-07-13 23:15:14 +0200 <FixedPointDude> then: f 4 is a fixed point of f k, for all k >= 6
2021-07-13 23:15:42 +0200 <FixedPointDude> i.e. (fmap ... fmap) 10 times = (fmap ... fmap) 6 times, etc
2021-07-13 23:15:50 +0200 <monochrom> Is that "fmap (fmap (fmap ..."? Is that "(...(fmap fmap) fmap) ..."?
2021-07-13 23:15:57 +0200 <FixedPointDude> left associate i believe
2021-07-13 23:16:02 +0200 <Hecate> koz: :')
2021-07-13 23:16:27 +0200 <koz> Hecate: What can I say? It's the source of many horrible conjectures.
2021-07-13 23:16:55 +0200 <FixedPointDude> the basis of this conjecture is that ghc claims these have the same types, and no other combinations i've noticed do
2021-07-13 23:17:22 +0200 <monochrom> @type ((fmap fmap) fmap) fmap
2021-07-13 23:17:23 +0200 <lambdabot> (Functor f1, Functor f2, Functor f3) => f1 (f2 (a -> b)) -> f1 (f2 (f3 a -> f3 b))
2021-07-13 23:17:26 +0200 <FixedPointDude> inspired by the observation that fmap fmap fmap = (.).(.)
2021-07-13 23:18:01 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-07-13 23:18:03 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
2021-07-13 23:18:22 +0200 <hseg> ah. you mean after a point, the types cycle between [(a -> b) -> f1 (f2 (f3 a)) -> f1 (f2 (f3 b))], [f1 (f2 (f3 (a -> b))) -> f1 (f2 (f3 (f4 a -> f4 b)))], [f1 (f2 (f3 (a -> b))) -> f1 (f2 (f3 (f4 a -> f4 b)))], [f1 (f2 (f3 (a -> b))) -> f1 (f2 (f3 (f4 a -> f4 b)))]
2021-07-13 23:18:32 +0200 <hseg> .... that was unreadable
2021-07-13 23:18:35 +0200 <FixedPointDude> not that i can parse what you wrote, but probably
2021-07-13 23:18:49 +0200 <FixedPointDude> haha
2021-07-13 23:19:07 +0200 <Hecate> hahaha
2021-07-13 23:19:14 +0200 <FixedPointDude> the idea of proving this makes my palms sweaty
2021-07-13 23:19:25 +0200 <FixedPointDude> i want to practice these kinds of things, but not actually this
2021-07-13 23:19:43 +0200 <hseg> not too bad -- it's just four unifications
2021-07-13 23:19:58 +0200 <FixedPointDude> (i don't know what a unification is)
2021-07-13 23:20:42 +0200 <FixedPointDude> https://github.com/jozefg/higher-order-unification/blob/master/explanation.md
2021-07-13 23:20:44 +0200 <hseg> when you apply f :: a -> b to a value c :: t, ghc checks a ~ c
2021-07-13 23:20:46 +0200 <FixedPointDude> this looks abstract
2021-07-13 23:21:24 +0200 <hseg> sorry, a ~t
2021-07-13 23:21:26 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-13 23:22:01 +0200 <hseg> and to do that, it *unifies* the two types -- tries applying known equalities to show they are also equal
2021-07-13 23:22:25 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Ping timeout: 246 seconds)
2021-07-13 23:24:03 +0200 <FixedPointDude> so like, e.g. given two parametric types, what's the biggest parametric type which is a subtype both?
2021-07-13 23:24:16 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2021-07-13 23:24:21 +0200 <FixedPointDude> the meet of parametric types
2021-07-13 23:24:21 +0200 <hseg> yup
2021-07-13 23:25:21 +0200 <hseg> e.g. x :: (Int, a), f :: (b,Bool) -> Char is legal since there is a unification (~ assignment of variables) s.t. (Int, a) ~ (b, Bool)
2021-07-13 23:26:34 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 272 seconds)
2021-07-13 23:27:00 +0200 <FixedPointDude> it seems to me that things like this can only show that a term is well-typed, so that two functions *might* be equal
2021-07-13 23:27:34 +0200 <FixedPointDude> but given two functions f,g : a -> b, i don't see how this technique can show that they are equal
2021-07-13 23:27:46 +0200 <FixedPointDude> extentionally, on all possible values
2021-07-13 23:28:16 +0200 <FixedPointDude> is this particular to some special universal property of fmap?
2021-07-13 23:28:26 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
2021-07-13 23:28:27 +0200 <hseg> don't _think_ so?
2021-07-13 23:28:34 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
2021-07-13 23:28:56 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
2021-07-13 23:30:45 +0200 <hseg> btw, note this depends on you applying left-associatively
2021-07-13 23:31:29 +0200 <hseg> right-associatively, fmap (fmap (...) :: f1 (f2 (f3 ... (a -> b) -> f1 (f2 (f3 ... (g a -> g b)
2021-07-13 23:33:04 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-07-13 23:34:42 +0200 <hseg> ah, I see where the fixpoint comes from -- recall we have a Functor ((->) a) instance
2021-07-13 23:38:11 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-13 23:41:52 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
2021-07-13 23:42:54 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-13 23:43:09 +0200 <FixedPointDude> i went and got a snack and i actually think the "fixed point" formulation is wrong
2021-07-13 23:43:23 +0200o1lo01ol_(~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
2021-07-13 23:43:32 +0200 <FixedPointDude> for the simple reason that (f f)(f f) is different from ((f f) f) f
2021-07-13 23:43:47 +0200 <FixedPointDude> so the re-stated conjecture is instead:
2021-07-13 23:44:00 +0200 <hseg> yes, but it's a fixed point of \k -> k fmap
2021-07-13 23:44:03 +0200 <FixedPointDude> f k+4 = f k, for all k >= 6
2021-07-13 23:44:15 +0200 <FixedPointDude> aaaah re: k as the variable
2021-07-13 23:44:29 +0200 <hseg> (well, it enters a cycle of period 4
2021-07-13 23:44:48 +0200 <hseg> so actually you want "is a fixed point of \k -> k fmap fmap fmap fmap"
2021-07-13 23:44:50 +0200 <hseg> )
2021-07-13 23:44:56 +0200Guest6135(~Guest61@2001:ac8:27:20::a01e)
2021-07-13 23:45:04 +0200 <FixedPointDude> yes, that'll do it
2021-07-13 23:45:45 +0200 <hololeap> koz: MonadTrans is one of the examples in the docs. see the second example under "Motiviation"
2021-07-13 23:45:50 +0200 <hololeap> *Motivation
2021-07-13 23:46:05 +0200 <koz> hololeap: The docs for QuantifiedConstraints I'm guessing?
2021-07-13 23:46:17 +0200warnz(~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
2021-07-13 23:46:17 +0200 <hololeap> yeah
2021-07-13 23:46:32 +0200 <hololeap> GHC user's guide
2021-07-13 23:46:35 +0200 <hseg> yeah, so the first couple steps are tiresome
2021-07-13 23:46:50 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Ping timeout: 272 seconds)
2021-07-13 23:47:59 +0200hexfive(~eric@50.35.83.177) (Quit: WeeChat 3.0)
2021-07-13 23:48:22 +0200 <hololeap> (this is actually the first time I've read about this extension...)
2021-07-13 23:49:23 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-13 23:49:51 +0200 <hololeap> so, would this allow us to make Set a real haskell Functor?
2021-07-13 23:50:32 +0200 <hseg> don't think so -- to make set into a Functor you'd need to be able to restrict the types at which it is applied
2021-07-13 23:50:54 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-07-13 23:51:28 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 246 seconds)
2021-07-13 23:52:40 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net)
2021-07-13 23:52:51 +0200mariohesles(~user@172.58.97.195)
2021-07-13 23:53:43 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-07-13 23:55:19 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-07-13 23:55:24 +0200 <hseg> FixedPointDude: http://ix.io/3sUI
2021-07-13 23:55:39 +0200fendor(~fendor@178.115.59.187.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-07-13 23:55:40 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2021-07-13 23:55:51 +0200 <hseg> note the heavy use made of the Functor ((->) a) instance to supply enough arguments
2021-07-13 23:56:49 +0200ph88(~ph88@2a02:8109:9e00:7e5c:146a:5c4b:109:2ce4) (Ping timeout: 268 seconds)
2021-07-13 23:57:10 +0200 <FixedPointDude> this is interesting
2021-07-13 23:57:15 +0200 <FixedPointDude> i don't know how to read it though
2021-07-13 23:57:40 +0200 <hseg> the existence of such an instance means that a bare fmap can be fed any number of arguments, as can be checked by asking GHC for the types of fmap, fmap _, fmap _ _, ...
2021-07-13 23:58:35 +0200 <hseg> ok, so lines outside {} are the types of various iterations of fmap
2021-07-13 23:59:02 +0200 <hseg> one then applies the term of that type to fmap :: (α -> β) -> (φ α -> φ β)
2021-07-13 23:59:35 +0200 <hseg> in order for this to be legal, the type of the parameter of the term must unify with this type
2021-07-13 23:59:51 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-07-13 23:59:57 +0200 <hseg> so eg first unification unifies (α -> β) -> (φ α -> φ β) and (a -> b)