Logs: liberachat/#haskell
| 2021-06-29 17:30:49 | <boxscape_> | Was Haskell ever meant to be used in production when the first person wrote `type FilePath = String` |
| 2021-06-29 17:32:19 | <dminuoso> | boxscape_: Well it was standardized in Haskell98, and at that time it was mostly still academic curiosity, so.. |
| 2021-06-29 17:33:28 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) (Remote host closed the connection) |
| 2021-06-29 17:33:39 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 2021-06-29 17:35:56 | × | azeem quits (~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it) (Ping timeout: 252 seconds) |
| 2021-06-29 17:36:55 | <qrpnxz> | i feel like sequenceA without functor could be it's own type class |
| 2021-06-29 17:37:45 | → | azeem joins (~azeem@176.200.239.16) |
| 2021-06-29 17:38:29 | ← | arjun parts (~user@user/arjun) (ERC (IRC client for Emacs 28.0.50)) |
| 2021-06-29 17:38:37 | monochrom | sets mode -o monochrom |
| 2021-06-29 17:38:49 | <boxscape_> | qrpnxz https://hackage.haskell.org/package/semigroupoids-5.3.5/docs/Data-Semigroup-Traversable.html#v:sequence1 |
| 2021-06-29 17:39:01 | <boxscape_> | or wait |
| 2021-06-29 17:39:02 | <qrpnxz> | though to be fair, idk when you'd get such a structure full of applicatives, that you couldn't map into, that you'd want to sequence |
| 2021-06-29 17:39:05 | <boxscape_> | I'm wrong |
| 2021-06-29 17:39:11 | <boxscape_> | that's without pure, not without fmap |
| 2021-06-29 17:39:19 | <qrpnxz> | yeah lol :) |
| 2021-06-29 17:39:23 | <qrpnxz> | thanks for input tho |
| 2021-06-29 17:39:44 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 2021-06-29 17:39:51 | <dminuoso> | qrpnxz: I think it helps to think of the signature function as traverse, not sequence |
| 2021-06-29 17:40:01 | <monochrom> | I don't understand "sequenceA without functor". |
| 2021-06-29 17:40:28 | <qrpnxz> | simply a thing you can sequence, but you can't traverse it, |
| 2021-06-29 17:40:42 | <dsal> | qrpnxz: Can you write an example? |
| 2021-06-29 17:40:43 | <qrpnxz> | because to sequence you'd need fmap to do sequenceA . fmap |
| 2021-06-29 17:40:59 | <monochrom> | I don't know what your definition of "sequence" is in this context. |
| 2021-06-29 17:41:01 | <qrpnxz> | like i said, there might not be any real world use for it |
| 2021-06-29 17:41:03 | <qrpnxz> | but it's a thing |
| 2021-06-29 17:41:07 | × | dunkeln quits (~dunkeln@188.71.193.140) (Ping timeout: 246 seconds) |
| 2021-06-29 17:41:09 | <monochrom> | Even in this context. Despite this context. |
| 2021-06-29 17:41:18 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 2021-06-29 17:41:26 | <qrpnxz> | by sequence i mean the exact same sequence from traversable type class |
| 2021-06-29 17:41:28 | <dminuoso> | "but it's a thing" |
| 2021-06-29 17:41:33 | <qrpnxz> | just without requiring fmap |
| 2021-06-29 17:41:37 | <dminuoso> | Can you give a precise definition/example? |
| 2021-06-29 17:41:59 | <qrpnxz> | so i can have a structure t (f a) and turn it into f (t a) |
| 2021-06-29 17:42:11 | <dsal> | Yes, but like, an example that compiles. :) |
| 2021-06-29 17:42:33 | <dminuoso> | qrpnxz: So I have a vague idea of what you *might* be looking for. |
| 2021-06-29 17:42:56 | <qrpnxz> | sure you can just take an Identity Identity 1 and turn it into an Identity Identity 1, there's an example lol |
| 2021-06-29 17:43:23 | <dsal> | But what's the function that does that look like? |
| 2021-06-29 17:44:02 | × | azeem quits (~azeem@176.200.239.16) (Read error: Connection reset by peer) |
| 2021-06-29 17:44:09 | <qrpnxz> | sequence (Identity fa) = fmap Identity fa |
| 2021-06-29 17:44:33 | <monochrom> | OK for starters on how you are very vague and ambiguous: The type of "sequence" is "(Traversable t, Monad m) => t (m a) -> m (t a)". There are two constraints, "Traversable t" and "Monad m". Which one are you saying you can weaken? |
| 2021-06-29 17:44:58 | <monochrom> | And that's just the most immediate ambiguity. |
| 2021-06-29 17:45:06 | <qrpnxz> | like i said i'm talking about sequenceA but i don't wanna type sequenceA |
| 2021-06-29 17:45:08 | <qrpnxz> | cmon |
| 2021-06-29 17:45:54 | <monochrom> | You can do a great service to clarity and precision by stating positively the type and constraints you want, rather than merely what you don't want. |
| 2021-06-29 17:46:02 | → | azeem joins (~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it) |
| 2021-06-29 17:46:07 | <qrpnxz> | in this case it would be like (Constructable t, Applicative f => t (f a) -> f (t a) where Constructable is the name of a type class that just has sequenceA and no functor requirement |
| 2021-06-29 17:46:09 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:48c3:15b7:84fd:d26e) |
| 2021-06-29 17:46:36 | <dminuoso> | qrpnxz: I see. Unfoldable is that thing. |
| 2021-06-29 17:46:48 | <dminuoso> | https://hackage.haskell.org/package/unfoldable-1.0.1/docs/Data-Unfoldable.html |
| 2021-06-29 17:47:05 | <dminuoso> | unfold :: (Unfoldable t, Unfolder f) => f a -> f (t a) |
| 2021-06-29 17:47:16 | <qrpnxz> | nice |
| 2021-06-29 17:47:18 | <dminuoso> | In some way, we could think of Traversable as Foldable and Unfoldable. |
| 2021-06-29 17:47:27 | <qrpnxz> | wait, unfolder? |
| 2021-06-29 17:47:30 | <dminuoso> | (Im not sure whether this will actually hold for infinite structures, though) |
| 2021-06-29 17:48:09 | <qrpnxz> | i think unfolder could just be functor but idk |
| 2021-06-29 17:48:43 | <dminuoso> | qrpnxz: You need Alternative at least for the construction on f. |
| 2021-06-29 17:48:57 | <dsal> | I find when I have confusion on things like this, I just try to do the thing that I think is obvious and find out either why it's not or build a thing and start using it. |
| 2021-06-29 17:51:23 | → | lavaman joins (~lavaman@98.38.249.169) |
| 2021-06-29 17:52:02 | <monochrom> | I guess some people's stance is "the reason I am in IRC not IDE is precisely because I want to just talk" |
| 2021-06-29 17:52:23 | <qrpnxz> | yeah this type signature does not match the one i gave really |
| 2021-06-29 17:52:41 | <qrpnxz> | it's unfolder to unfolder of unfoldable |
| 2021-06-29 17:53:06 | <qrpnxz> | monochrom, lmao thanks for that |
| 2021-06-29 17:54:30 | → | cheater1__ joins (~Username@user/cheater) |
| 2021-06-29 17:54:46 | × | cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds) |
| 2021-06-29 17:54:53 | cheater1__ | is now known as cheater |
| 2021-06-29 17:55:16 | <qrpnxz> | if i try to look up my signature all i get is sequenceA lol, i don't think there is a package that does what i'm saying |
| 2021-06-29 17:55:32 | <qrpnxz> | anyway like i said it probably has no good real world use, just a thought |
| 2021-06-29 17:55:50 | <monochrom> | You can write mockup code and examples. |
| 2021-06-29 17:56:56 | × | MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 256 seconds) |
| 2021-06-29 17:57:49 | → | MQ-17J joins (~MQ-17J@8.21.10.15) |
| 2021-06-29 17:59:58 | × | acidjnk quits (~acidjnk@p200300d0c72b9572bd416add378a35d9.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 2021-06-29 18:00:07 | <dsal> | Most of these things aren't very big. You could build Traversable from a description of it pretty quickly. |
| 2021-06-29 18:00:20 | <dsal> | For your type of thing, I tend to just write up a couple of examples and then make them work. |
| 2021-06-29 18:01:33 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2021-06-29 18:02:22 | × | jolly quits (~jolly@208.180.97.158) (Ping timeout: 272 seconds) |
| 2021-06-29 18:02:43 | × | v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Remote host closed the connection) |
| 2021-06-29 18:04:07 | → | Pickchea joins (~private@user/pickchea) |
| 2021-06-29 18:04:35 | → | nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 2021-06-29 18:05:58 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 246 seconds) |
| 2021-06-29 18:06:13 | × | boxscape_ quits (~boxscape_@p4ff0ba7a.dip0.t-ipconnect.de) (Quit: Connection closed) |
| 2021-06-29 18:06:54 | → | zmt01 joins (~zmt00@user/zmt00) |
| 2021-06-29 18:07:01 | → | boxscape_ joins (~boxscape_@p4ff0ba7a.dip0.t-ipconnect.de) |
| 2021-06-29 18:07:35 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 2021-06-29 18:09:06 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 2021-06-29 18:09:23 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1) |
| 2021-06-29 18:10:01 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 250 seconds) |
| 2021-06-29 18:10:22 | → | curiousgay joins (~curiousgg@77-120-144-167.kha.volia.net) |
| 2021-06-29 18:13:00 | × | warnz quits (~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Remote host closed the connection) |
| 2021-06-29 18:17:28 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 2021-06-29 18:20:40 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 2021-06-29 18:22:24 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 2021-06-29 18:25:34 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 2021-06-29 18:26:51 | → | dunkeln joins (~dunkeln@188.71.193.140) |
| 2021-06-29 18:27:05 | → | feliix42 joins (~felix@gibbs.uberspace.de) |
| 2021-06-29 18:28:34 | <qrpnxz> | that simple https://termbin.com/nqdo |
| 2021-06-29 18:30:42 | × | nschoe quits (~quassel@2a01:e0a:8e:a190:d025:e55c:9af3:6699) (Ping timeout: 240 seconds) |
| 2021-06-29 18:30:58 | → | warnz joins (~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) |
| 2021-06-29 18:31:58 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 2021-06-29 18:33:34 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 2021-06-29 18:34:14 | → | gehmehgeh joins (~user@user/gehmehgeh) |
All times are in UTC.