Logs on 2023-12-07 (liberachat/#haskell)
| 00:01:43 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 00:02:18 | × | xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 252 seconds) |
| 00:04:05 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 00:04:07 | → | xff0x joins (~xff0x@2405:6580:b080:900:8e8f:f259:634:292d) |
| 00:06:29 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 00:06:29 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 00:06:29 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:07:24 | × | tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in) |
| 00:10:06 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:17:20 | → | hsdafdlashfdlsh joins (~hsdafdlas@104.223.91.28) |
| 00:19:06 | <hsdafdlashfdlsh> | I'm looking for a pure Haskell integer programming library; does anyone have a recommendation? |
| 00:20:07 | → | carif^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 00:22:10 | → | pavonia joins (~user@user/siracusa) |
| 00:22:26 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |
| 00:28:56 | <Lycurgus> | https://hackage.haskell.org/package/limp |
| 00:32:35 | <Lycurgus> | everything in that areas looks like bindings |
| 00:32:50 | <Lycurgus> | don't see any actually doin stuff |
| 00:33:36 | <Lycurgus> | bindings and representation |
| 00:33:57 | <Lycurgus> | teed up for doin stuff igess |
| 00:35:02 | <Lycurgus> | prolly something in the OR / math programming societies which doesn make its way to hackage |
| 00:35:05 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 00:35:33 | <Lycurgus> | i vaguely recall maybe having seen such |
| 00:36:36 | <hsdafdlashfdlsh> | Lycurgus: Yeah, I found that too, but doesn't seem like it has much of a solver at all. |
| 00:36:55 | <Lycurgus> | solver = doin stuff |
| 00:38:01 | <hsdafdlashfdlsh> | Oh right. |
| 00:38:11 | <Lycurgus> | hopefully i didn give the impression i thought bindings isn the way to go |
| 00:38:30 | <Lycurgus> | but didn see any good bindings either |
| 00:39:33 | <Lycurgus> | ppls are big on representation and le'elegance hereabouts, which becomes a kind of hectic doin in its own right |
| 00:39:52 | <hsdafdlashfdlsh> | Yeah. I think I'll just have to roll my own. :) |
| 00:40:52 | <hsdafdlashfdlsh> | Probably won't be so le'elegant, though. |
| 00:41:15 | Lycurgus | having made the point about bindings moves on |
| 00:45:29 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 00:54:29 | × | xff0x quits (~xff0x@2405:6580:b080:900:8e8f:f259:634:292d) (Ping timeout: 256 seconds) |
| 00:55:41 | × | bratwurst quits (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Quit: Leaving) |
| 00:56:24 | → | xff0x joins (~xff0x@ai096045.d.east.v6connect.net) |
| 01:00:10 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 01:02:02 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds) |
| 01:07:35 | × | carif^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection) |
| 01:12:08 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 01:19:24 | × | hsdafdlashfdlsh quits (~hsdafdlas@104.223.91.28) (Quit: Client closed) |
| 01:22:38 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 01:22:38 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 01:22:38 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:22:58 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 01:24:07 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds) |
| 01:26:24 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 01:48:27 | × | Incredia_ quits (~Incredia@176.254.244.83) (Ping timeout: 256 seconds) |
| 01:52:02 | → | Incredia joins (~Incredia@176.254.244.83) |
| 02:03:25 | → | bilegeek joins (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) |
| 02:04:09 | × | bilegeek quits (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) (Max SendQ exceeded) |
| 02:04:59 | → | bilegeek joins (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) |
| 02:05:59 | × | bilegeek quits (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) (Max SendQ exceeded) |
| 02:07:07 | → | bilegeek joins (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) |
| 02:07:20 | × | idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1) |
| 02:08:07 | × | bilegeek quits (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) (Max SendQ exceeded) |
| 02:09:19 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 02:09:27 | → | bilegeek joins (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) |
| 02:10:28 | × | bilegeek quits (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) (Max SendQ exceeded) |
| 02:10:51 | × | whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 02:11:27 | → | bilegeek joins (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) |
| 02:11:54 | × | bilegeek quits (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) (Remote host closed the connection) |
| 02:17:53 | → | jargon joins (~jargon@174-22-221-51.phnx.qwest.net) |
| 02:26:09 | × | pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection) |
| 02:27:15 | → | pastly joins (~pastly@gateway/tor-sasl/pastly) |
| 02:28:07 | ezzieygu1wuf | is now known as ezzieyguywuf |
| 02:29:46 | × | xff0x quits (~xff0x@ai096045.d.east.v6connect.net) (Ping timeout: 255 seconds) |
| 02:30:35 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 264 seconds) |
| 02:34:20 | → | myxos joins (~myxos@065-028-251-121.inf.spectrum.com) |
| 02:34:22 | → | bilegeek joins (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) |
| 02:35:52 | → | whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com) |
| 02:36:28 | <Lycurgus> | ftr, limp does have the two main classic solution techniques as solvers |
| 02:40:25 | <Lycurgus> | or stubs of ones anyway |
| 02:40:34 | <Lycurgus> | so don't say no damn solvers |
| 02:40:36 | → | bratwurst joins (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) |
| 02:40:53 | × | bratwurst quits (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Client Quit) |
| 02:41:25 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 02:41:26 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 02:41:26 | → | wroathe joins (~wroathe@user/wroathe) |
| 02:44:53 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 268 seconds) |
| 02:49:17 | × | Square2 quits (~Square4@user/square) (Ping timeout: 240 seconds) |
| 02:56:11 | → | notzmv joins (~zmv@user/notzmv) |
| 02:57:29 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 02:59:57 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 03:08:30 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9ce:2c57:5542:dde4) (Remote host closed the connection) |
| 03:08:45 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) |
| 03:11:27 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 03:16:34 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 03:19:28 | × | jargon quits (~jargon@174-22-221-51.phnx.qwest.net) (Remote host closed the connection) |
| 03:33:35 | × | shOkEy quits (~shOkEy@178-164-188-90.pool.digikabel.hu) (Ping timeout: 264 seconds) |
| 03:35:03 | → | shOkEy joins (~shOkEy@92-249-185-141.pool.digikabel.hu) |
| 03:37:59 | × | edr quits (~edr@user/edr) (Quit: Leaving) |
| 03:46:11 | × | td_ quits (~td@i53870917.versanet.de) (Ping timeout: 264 seconds) |
| 03:47:45 | → | td_ joins (~td@i53870937.versanet.de) |
| 03:50:01 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:53:48 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:53:48 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:53:48 | finn_elija | is now known as FinnElija |
| 03:59:07 | → | trev joins (~trev@user/trev) |
| 03:59:21 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 04:00:56 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 04:01:36 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 04:03:34 | → | wgl joins (~wgl@2601:8c0:d01:43a0::6d47) |
| 04:07:53 | × | wgl quits (~wgl@2601:8c0:d01:43a0::6d47) (Client Quit) |
| 04:08:31 | <iqubic> | Is there something better I can do than (liftA2 zip fx fy)? I'm looking for something of type Applicative f => f [a] -> f [b] -> f [(a, b)] |
| 04:08:59 | <Axman6> | zip <$> fx <*> fy? =) |
| 04:09:12 | <Axman6> | But no, not really |
| 04:09:31 | <iqubic> | That's just a restating of the initial problem. |
| 04:09:41 | <Axman6> | yes, hence the =) |
| 04:09:50 | <iqubic> | Do need Applicative here? |
| 04:10:17 | <Axman6> | Well, if we had an Apply type class, you could get away with that, but we don't |
| 04:11:23 | <iqubic> | I can't use fmap only here? |
| 04:14:10 | × | sabino quits (~sabino@user/sabino) (Quit: Lambda _ -> x) |
| 04:14:17 | <monochrom> | No, this is the point of liftA2. |
| 04:17:26 | <jackdk> | Axman6: https://hackage.haskell.org/package/semigroupoids-6.0.0.1/docs/Data-Functor-Apply.html#t:Apply |
| 04:19:06 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 04:21:07 | × | thegeekinside quits (~thegeekin@189.141.65.247) (Remote host closed the connection) |
| 04:23:56 | → | ddellacosta joins (~ddellacos@ool-44c73d16.dyn.optonline.net) |
| 04:25:12 | <Axman6> | Sure, it exists, but it's not worth a package import for |
| 04:25:17 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 04:31:43 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 04:39:46 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 04:44:41 | → | aforemny_ joins (~aforemny@i59F516C0.versanet.de) |
| 04:45:41 | × | aforemny quits (~aforemny@i59F516FF.versanet.de) (Ping timeout: 240 seconds) |
| 04:47:28 | <iqubic> | What makes this situation require Applicative? |
| 04:51:00 | <ski> | that you're not operating over one "collection"/"computation"/"action"/"effect", but two in this case, combining them |
| 04:51:24 | <ski> | (`fx' and `fy') |
| 04:51:27 | → | danza joins (~francesco@rm-19-11-235.service.infuturo.it) |
| 04:53:06 | <iqubic> | Oh... I see. That's kinda what I thought TBH. |
| 04:53:52 | <ski> | (just one would be `Functor'. zero or more is `Applicative' (idiom). that one is still "static" in the sense that the "computation structure" doesn't depend on intermediate values in the computation. `Monad' is "dynamic" in that "what (effects) to do later" may depend upon intermediate values, unlike `Applicative') |
| 04:55:16 | <iqubic> | How do you do zero? Is that the `pure' case? |
| 04:56:41 | <ski> | yes |
| 04:57:19 | <ski> | define `sequenceA :: Applicative i => [i a] -> i [a]' for yourself |
| 04:59:13 | <iqubic> | > traverse id |
| 04:59:15 | <lambdabot> | error: |
| 04:59:15 | <lambdabot> | • No instance for (Typeable f0) |
| 04:59:15 | <lambdabot> | arising from a use of ‘show_M65950731038089380657’ |
| 04:59:30 | <iqubic> | that's not really doing what you asked. |
| 05:01:44 | <danza> | > :t traverse id |
| 05:01:45 | <lambdabot> | <hint>:1:1: error: parse error on input ‘:’ |
| 05:01:51 | <ski> | yea, i meant define it, without using `Traversable' operations :) |
| 05:01:55 | <danza> | % :t traverse id |
| 05:01:55 | <yahb2> | traverse id :: (Traversable t, Applicative f) => t (f b) -> f (t b) |
| 05:02:31 | <danza> | using traversable seems more fun though :) |
| 05:02:34 | <ski> | ("from scratch", if you will) |
| 05:02:34 | <danza> | good morning all |
| 05:03:15 | <ski> | but yea, if you prefer, you can define `traverse' (for lists, say) instead. they're equivalent |
| 05:03:32 | <monochrom> | I.e., write your own recursion over the input list. Use Applicative methods. |
| 05:03:49 | <ski> | using `foldr' e.g. would also be okay |
| 05:04:12 | <iqubic> | I'm gonna work on Advent of Code now. I'll work on this later. |
| 05:04:13 | <monochrom> | Yeah actually it's a beautiful foldr too. |
| 05:04:17 | <ski> | (but it might be easier, and perhaps more enlightening, to do direct recursion) |
| 05:06:20 | <danza> | interesting. Usually things that are discovered allow expressing more complex from simpler, but here traversable is more simple and also based on the former to build with it |
| 05:06:50 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 05:09:30 | <ski> | "things that are discovered" ? |
| 05:10:16 | <danza> | abstractions that are discovered. I am referring to a distinction between invention and discovery, but probably the concept is not as popular as i thought |
| 05:10:18 | <ski> | "but here traversable is more simple" -- than what ? "and also based on the former to build with it" -- the former being ? `sequenceA' ? |
| 05:10:42 | <danza> | then it feels more primitive. Applicative |
| 05:10:47 | <ski> | the line can get a bit blurry |
| 05:11:07 | <danza> | definitely. A matter of reworking them over centuries, i guess |
| 05:11:21 | <monochrom> | Well, to me, the sentence simply didn't parse. :) |
| 05:11:45 | <monochrom> | And too many pronouns. |
| 05:11:46 | <danza> | yeah i just wake up and dived straight in something not that plain ^^; |
| 05:12:25 | <danza> | i assume haskellers have outstanding parsing skillss XD |
| 05:12:52 | <ski> | i think i relatively often have to ask for referents for pronouns .. not sure how much of that is a me problem, and how much is a problem of others not always articulating too clearly what they intend / have in mind |
| 05:13:15 | <danza> | definitely a writer's problem, i would say |
| 05:13:49 | <iqubic> | I'm a woman. I use she/her, if that matters. |
| 05:13:50 | <danza> | but could also be lack of practice with impure expressions XD |
| 05:14:51 | <danza> | oh nice to see the number of woman haskellers increasing. About pronouns, i try to use "them" until it gets clear, if that matters |
| 05:15:14 | <iqubic> | I'm trans, but I'm still a woman. |
| 05:15:15 | <ski> | hm, well, i guess i was more thinking of pronouns like "it", "this", that", and the like |
| 05:15:31 | <ski> | (sorry if that wasn't clear) |
| 05:15:55 | <danza> | those refer to locally defined variables that are outside an expression :D |
| 05:16:19 | <danza> | immutable, sure, but natural language is often mutable |
| 05:16:28 | <monochrom> | Right, I was referring to, for example, "it is a constant therefore it is zero". (Can you guess that it (pun!) means "f is a constant therefore the derivative of f is zero"?) |
| 05:16:52 | <monochrom> | So now you are speaking like "I add more 'it's until it's clear" XD |
| 05:17:00 | <danza> | oh applicative and traversable were in scope |
| 05:17:07 | <ski> | yea .. but they're kinda picked out of the wind, like a type class instance. only there can be several ones matching, in scope, and can be ambiguous which one was intended (or perhaps not at all clear which ones would waulify) |
| 05:17:55 | <danza> | in fact it does not matter because i was trying to talk about a circular dependency about "primitives" |
| 05:18:16 | <ski> | (then there's also stuff like "donkey sentences") |
| 05:18:30 | <ski> | circular, how ? |
| 05:18:59 | <danza> | the simplest definition of a (defining) applicative function depending on traversable |
| 05:19:27 | <ski> | defining ? |
| 05:20:01 | <danza> | well yeah, to define an applicative you need a sequenceA, although... probably there is another grade of definition, the abstract one |
| 05:21:29 | <monochrom> | No, you just need a desire for "like fmap but for a 2-ary operator and two operands" |
| 05:22:03 | <danza> | (i don't think anyone here doubts a trans woman is a woman if that matters iqubic) |
| 05:22:47 | × | Unode quits (~Unode@fg-ext-220.embl.de) (Ping timeout: 260 seconds) |
| 05:22:56 | <danza> | i see ... i am not good at those. Bifunctors? |
| 05:25:42 | × | monochrom quits (trebla@216.138.220.146) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in) |
| 05:26:20 | <ski> | hmm .. i guess `sequenceA' (for lists) may be enough to derive `pure' and `(<*>)' .. not sure if you can get `fmap' from `sequenceA' or `traverse', though |
| 05:28:23 | <jle`> | :t \f -> runIdentity . traverse (Identity . f) |
| 05:28:24 | <lambdabot> | Traversable t => (a -> b) -> t a -> t b |
| 05:28:44 | <jle`> | :t fmapDefault |
| 05:28:45 | <lambdabot> | Traversable t => (a -> b) -> t a -> t b |
| 05:29:30 | → | Unode joins (~Unode@fg-ext-220.embl.de) |
| 05:32:03 | <ski> | yea, sorry, still talking about `Traversable []', and wanting to get `fmap' for the `Applicative' in question, not for the `Traversable' (`[]') |
| 05:33:38 | <danza> | well i did not mean one could also define the functor part with sequenceA |
| 05:34:25 | <ski> | yea, i was still wondering :p |
| 05:34:36 | <ski> | (and no, bifunctors is for something else) |
| 05:38:59 | → | monochrom joins (trebla@216.138.220.146) |
| 05:39:15 | <ski> | re |
| 05:39:35 | <danza> | "re"? |
| 05:40:28 | <int-e> | short for "rehi", "Hi again", or something like that |
| 05:40:34 | <ski> | monochrom being back |
| 05:41:44 | <danza> | rehi monochrom :D |
| 05:50:28 | <glguy> | (aoc spoiler day 7) I was excited to get to use two different extensions (productively) in this one list comprehension https://github.com/glguy/advent/blob/main/solutions/src/2023/07.hs#L44-L45 |
| 05:51:36 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) (Remote host closed the connection) |
| 05:52:06 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 252 seconds) |
| 05:52:39 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 05:53:52 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 05:55:43 | × | chexum_ quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 05:59:29 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 06:02:30 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 06:03:45 | <EvanR> | I lost too much time on part 1 messing with Ord stuff |
| 06:03:56 | <EvanR> | got to resume later |
| 06:09:35 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:14:52 | × | glguy quits (g@libera/staff/glguy) (Quit: Quit) |
| 06:18:23 | × | g quits (g@libera/staff/glguy) (Remote host closed the connection) |
| 06:18:49 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds) |
| 06:19:09 | → | euleritian joins (~euleritia@dynamic-046-114-206-154.46.114.pool.telefonica.de) |
| 06:21:14 | → | glguy joins (glguy@libera/staff/glguy) |
| 06:23:10 | → | g joins (glguy@libera/staff/glguy) |
| 06:23:15 | <haskellbridge> | 12<Celestial> when we have a function whose input will only ever be ``n `rem` <constant>`` , is there a way to tell the compiler that it's "fine" to just have the cases from 0 to n - 1? |
| 06:23:54 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) |
| 06:24:06 | <ski> | hm, as in exhaustiveness checking ? |
| 06:24:11 | <haskellbridge> | 12<Celestial> I know I could just ignore the warning about non exhaustive pattern matches or add `foo _ = undefined` but I don't like those particularly well |
| 06:24:56 | <haskellbridge> | 12<Celestial> ski: yes, I was just wondering if maybe there was a better way to do this in general or if this is just something I have to live with |
| 06:25:50 | <haskellbridge> | 12<Celestial> (the cases I need to have are 0 to <constant> - 1, my bad) |
| 06:25:57 | <ski> | i'm not aware of a way to convince GHC it's impossible |
| 06:26:05 | <ski> | (yea, that much was evident) |
| 06:27:15 | <ski> | (i imagine making a wrapper that explicitly calls `mod', before calling a locally defined function with the cases .. would still issue the same warning, despite being local, and only reachable through filtering that input through the `mod') |
| 06:27:39 | <ski> | maybe LiquidHaskell has some exhaustiveness checking, that would be applicable here .. dunno |
| 06:27:40 | <int-e> | > (-3) `rem` 2 |
| 06:27:41 | <lambdabot> | -1 |
| 06:27:44 | <ski> | yes |
| 06:27:49 | <haskellbridge> | 12<Celestial> https://hackage.haskell.org/package/mod-0.2.0.1/ |
| 06:27:49 | <haskellbridge> | 12<Celestial> this seems interesting but also overkill |
| 06:27:58 | <int-e> | > (-3) `mod` 2 |
| 06:28:00 | <lambdabot> | 1 |
| 06:28:15 | ski | figured Celestial actually meant `mod' |
| 06:29:04 | <haskellbridge> | 12<Celestial> right, I |
| 06:29:18 | <haskellbridge> | 12<Celestial> wasn't sure which was correct but now I get it haha |
| 06:29:21 | <jackdk> | Celestial: Use https://hackage.haskell.org/package/fin-0.3/docs/Data-Fin.html ? |
| 06:29:40 | <int-e> | But in either case, GHC doesn't track value ranges for expressions. |
| 06:30:05 | <haskellbridge> | 12<Celestial> that makes sense |
| 06:30:09 | <haskellbridge> | 12<Celestial> thank you |
| 06:31:33 | <danza> | curious whether that stems out of an advent of code problem, since that is The Thing now |
| 06:31:56 | <haskellbridge> | 12<Celestial> it is not |
| 06:32:22 | <ski> | glguy : `ParallelListComp' and `TransformListComp', nice :) |
| 06:32:32 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
| 06:32:55 | <haskellbridge> | 12<Celestial> I'm writing a visualizer for sorting algorithms in a TUI and part of that is scaling down the bars and using the eighth-sized unicode characters |
| 06:33:41 | <danza> | oh interesting |
| 06:34:05 | <danza> | TUI for visualisation is kind of hardcore |
| 06:34:16 | <haskellbridge> | 12<Celestial> it works surprisingly well |
| 06:34:53 | <haskellbridge> | 12<Celestial> does IRC/Heisenridge support media/images/video? |
| 06:34:59 | <ski> | horizontal or vertical bars ? |
| 06:35:25 | <haskellbridge> | 12<Celestial> vertical but I'm using brick which makes that significantly less painful |
| 06:35:52 | <ski> | no inline images, sound, clips, page previews |
| 06:35:55 | <ski> | (thankfully) |
| 06:35:56 | <danza> | yeah well, but those vis could hardly ever become interactive i guess |
| 06:36:24 | <haskellbridge> | 12<Celestial> I mean you can have keyboard shortcuts and there is (limited) mouse support |
| 06:36:31 | <ski> | there is mouse support for XTerm, &c. |
| 06:36:46 | <danza> | better than i thought |
| 06:36:46 | <ski> | Celestial : you could also look into Sixel support, i suppose |
| 06:37:09 | → | chomwitt joins (~chomwitt@2a02:587:7a09:c300:1ac0:4dff:fedb:a3f1) |
| 06:37:15 | <ski> | (and 24-bit colors. or at least 256-color) |
| 06:37:23 | <haskellbridge> | 12<Celestial> I think too few terminals actually support that |
| 06:37:35 | <ski> | which ? |
| 06:37:54 | <haskellbridge> | 12<Celestial> the sixel/bitmap thing |
| 06:37:58 | <ski> | mm |
| 06:38:51 | <haskellbridge> | 12<Celestial> But honestly, if you don't need a circular representation; this bar thing works well, especially with the eights unicode characters it looks very smooth |
| 06:39:28 | <haskellbridge> | 12<Celestial> s/eights/eighths (is that how you spell it?) |
| 06:41:41 | → | kenran joins (~user@user/kenran) |
| 06:43:11 | → | alp_ joins (~alp@2001:861:e3d6:8f80:6d8:4f2f:863e:ca1) |
| 06:54:53 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 06:56:35 | → | igemnace joins (~ian@user/igemnace) |
| 06:58:19 | × | qqq quits (~qqq@92.43.167.61) (Remote host closed the connection) |
| 07:00:28 | → | acidjnk_new joins (~acidjnk@p200300d6e72b9388205ae88ccd349b12.dip0.t-ipconnect.de) |
| 07:01:22 | × | analoq quits (~yashi@user/dies) (Ping timeout: 260 seconds) |
| 07:02:54 | → | analoq joins (~yashi@user/dies) |
| 07:03:46 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 276 seconds) |
| 07:05:19 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 07:06:20 | → | qqq joins (~qqq@92.43.167.61) |
| 07:06:55 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 07:07:16 | × | danza quits (~francesco@rm-19-11-235.service.infuturo.it) (Read error: Connection reset by peer) |
| 07:07:59 | <ski> | (i believe so) |
| 07:08:11 | × | benjaminl quits (~benjaminl@user/benjaminl) (Remote host closed the connection) |
| 07:09:51 | → | benjaminl joins (~benjaminl@user/benjaminl) |
| 07:13:31 | <jle`> | ski: ah whoops totally missed the "for lists" part. although you can sort of cheat kinda |
| 07:13:53 | <jle`> | :t \f -> head . traverse ((:[]) . f) |
| 07:13:54 | <lambdabot> | Traversable t => (a -> b) -> t a -> t b |
| 07:14:01 | <jle`> | huh what happened |
| 07:14:46 | <jle`> | i'm probably wrong |
| 07:14:51 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 07:18:23 | <ski> | well, you can do `pure' and `(<*>)', right ? |
| 07:20:23 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds) |
| 07:22:22 | → | danza joins (~francesco@rm-19-35-115.service.infuturo.it) |
| 07:25:14 | × | rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 07:25:32 | → | rvalue joins (~rvalue@user/rvalue) |
| 07:34:00 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 07:39:30 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 07:39:55 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 255 seconds) |
| 07:51:58 | × | shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 255 seconds) |
| 07:52:37 | → | bryanv_ joins (~quassel@2603:c028:4503:7500:45b7:933:ab17:bc10) |
| 07:54:09 | × | bryanv quits (~quassel@2603:c028:4503:7500:45b7:933:ab17:bc10) (Ping timeout: 268 seconds) |
| 07:59:59 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 08:01:13 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 08:01:56 | × | euleritian quits (~euleritia@dynamic-046-114-206-154.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
| 08:02:15 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 08:04:07 | × | danza quits (~francesco@rm-19-35-115.service.infuturo.it) (Ping timeout: 255 seconds) |
| 08:14:47 | × | stefan-_ quits (~cri@42dots.de) (Ping timeout: 256 seconds) |
| 08:14:49 | → | stefan-_- joins (~cri@42dots.de) |
| 08:15:52 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 246 seconds) |
| 08:16:10 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 08:17:50 | → | dhil joins (~dhil@2001:8e0:2014:3100:371a:4a41:b512:1e94) |
| 08:20:52 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 08:22:02 | <iqubic> | ski: |
| 08:22:04 | <iqubic> | sequenceA :: (Applicative f) => [f a] -> f [a] |
| 08:22:14 | <iqubic> | sequenceA [] = pure [] |
| 08:22:23 | <iqubic> | sequenceA (x:xs) = (:) <$> x <*> sequenceA xs |
| 08:22:38 | <ski> | yes, nice :) |
| 08:23:09 | <iqubic> | I took a break to do Advent of Code, and get food too. |
| 08:23:23 | <iqubic> | That just popped into my head while I was out. |
| 08:23:36 | <ski> | if you feel like it, you could try to (re)formulate that as a `foldr' |
| 08:24:00 | <iqubic> | I want to do that, I'm just not sure how. |
| 08:24:31 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:25:05 | <ski> | but yea, the important part, that i was thinking of, was to notice that for the empty list (zero computations to combine), you use `pure'; and for the non-empty list (head and tail, two computations (after recursively combining all items in the tail)), you use `(<*>)' |
| 08:25:09 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit) |
| 08:25:34 | <ski> | well, i could give you a hint, that might help a little |
| 08:26:07 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:26:54 | → | vpan joins (~vpan@mail.elitnet.lt) |
| 08:27:16 | <iqubic> | sequenceA = foldr (\x acc -> (:) <$> x <*> acc) (pure []) |
| 08:27:37 | × | ft quits (~ft@p3e9bc784.dip0.t-ipconnect.de) (Quit: leaving) |
| 08:27:38 | <iqubic> | sequenceA = foldr (\x acc -> liftA2 (:) x acc) (pure []) |
| 08:27:58 | <iqubic> | sequenceA = foldr (liftA2 (:)) (pure []) |
| 08:28:19 | <ski> | yep :) |
| 08:28:21 | <iqubic> | That's really interesting.... |
| 08:28:52 | <ski> | you replace the `(:)'s and the `[]' in the list, with "effectful" versions of them |
| 08:29:02 | <ski> | @type pure [] |
| 08:29:04 | <lambdabot> | Applicative f => f [a] |
| 08:29:08 | <ski> | @type liftA2 (:) |
| 08:29:09 | <lambdabot> | Applicative f => f a -> f [a] -> f [a] |
| 08:29:11 | <iqubic> | Yeah. I just say that. |
| 08:30:39 | <iqubic> | I love that comparison. |
| 08:36:13 | <[exa]> | Re applicatives, I love doing stuff like: MyStruct <$> getField1 <*> getField2 <*> ..., typically in parsers |
| 08:36:41 | <[exa]> | if I also want a smart constructor (for e.g. checking the values of stuff being in range), is there any good pattern to have it nicely in this scheme? |
| 08:36:59 | <ski> | (btw, in case it's not clear, you could say `pure' is `liftA0', so to speak. and `fmap'/`(<$>)' is `liftA1', so to speak) |
| 08:37:35 | <[exa]> | in particular, if my smart constructor can fail, it cannot fail the same applicative wrap easily using just <$> and <*>, so I have to do something like `join $ mkMyStructChecked <$> getField1 <*> getField2 ...` |
| 08:38:15 | <[exa]> | I hoped there'd be an operator for that but no luck so far :D |
| 08:40:57 | <ski> | @let infixl 4 <*>>; (<*>>) :: Monad m => m (a -> m b) -> m a -> m b; mamb <*>> ma = join (mamb <*> ma) |
| 08:40:58 | <lambdabot> | Defined. |
| 08:41:31 | <ski> | [exa] : use `foo <*> bar <*> baz <*>> quux' |
| 08:42:41 | <ski> | (i've noticed this pattern before) |
| 08:45:07 | <[exa]> | oh nice |
| 08:46:20 | <[exa]> | I assume there's no sane way to have that special operator to be the "first" one, right? (not a problem, we always need the "full" effect anyway, but it would be cool) |
| 08:46:40 | <ski> | i don't think so |
| 08:47:12 | <ski> | you can think of it as the inner effect in `foo' only happening once we reach (and pass) `quux' |
| 08:47:18 | <[exa]> | would probably need varargs-like shenanigans |
| 08:48:24 | <[exa]> | not a problem tho, I was more like reaching for uniformity or so |
| 08:49:03 | <[exa]> | (perhaps if we had prolog-ish operators we could do a suffix "period" on the end :D ) |
| 08:49:44 | <ski> | (of course, if `foo' doesn't do any initial effects, just a final pass, you'd use `<$>' for the first part, instead of `<*>'9 |
| 08:49:47 | <ski> | ) |
| 08:50:12 | <ski> | yea, postfix (and prefix) operators |
| 08:52:19 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 08:52:41 | → | euleritian joins (~euleritia@dynamic-046-114-206-154.46.114.pool.telefonica.de) |
| 09:01:16 | → | telser_ joins (~quassel@user/telser) |
| 09:01:29 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) (Remote host closed the connection) |
| 09:03:31 | × | telser quits (~quassel@user/telser) (Ping timeout: 268 seconds) |
| 09:04:01 | × | Incredia quits (~Incredia@176.254.244.83) (Ping timeout: 276 seconds) |
| 09:05:27 | → | idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 09:06:08 | × | Nixkernal quits (~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 09:08:28 | × | tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz) |
| 09:09:10 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 09:09:37 | <cheater> | geekosaur: that new info paste is cool :) |
| 09:18:38 | <jle`> | is there a "_head" *lens* ? Lens' [a] (Maybe a) |
| 09:18:44 | <cheater> | anyone ever feel like you change one type somewhere and then you have to contend with "draw the rest of the owl" |
| 09:21:29 | <jle`> | ah i guess a head lens probably wouldn't make sense because you can set to Nothing but then a get won't be Nothing necessarily |
| 09:21:32 | <jle`> | darn |
| 09:21:41 | → | enviosity joins (~enviosity@176.254.244.83) |
| 09:24:00 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 09:24:30 | <ski> | @type _head |
| 09:24:31 | <lambdabot> | (Cons s s a a, Applicative f) => (a -> f a) -> s -> f s |
| 09:24:53 | <jle`> | yeah i was hoping for a lens |
| 09:25:06 | <jle`> | like `at 0` hypothetically |
| 09:27:25 | <Taneb> | How do you `set _head Nothing`? |
| 09:27:28 | <jle`> | i guess the optic class i really wanted was (Maybe a -> f b) -> s -> f t |
| 09:27:54 | <jle`> | where you can get Nothing from head but you can't set it to Nothing |
| 09:28:22 | <jle`> | * forall f. Functor f |
| 09:28:53 | → | danse-nr3 joins (~danse@rm-19-33-5.service.infuturo.it) |
| 09:31:32 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 09:32:06 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) |
| 09:36:10 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 09:46:22 | → | AlexNoo_ joins (~AlexNoo@5.139.232.120) |
| 09:46:25 | × | AlexNoo quits (~AlexNoo@5.139.232.120) (Read error: Connection reset by peer) |
| 09:48:21 | → | CiaoSen joins (~Jura@2a05:5800:285:ca00:ca4b:d6ff:fec1:99da) |
| 09:56:23 | × | bilegeek quits (~bilegeek@2600:1008:b019:ebe6:e541:b9c8:7cbf:696) (Quit: Leaving) |
| 09:58:00 | → | fendor joins (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) |
| 09:59:32 | → | cfricke joins (~cfricke@user/cfricke) |
| 10:04:53 | → | hgolden_ joins (~hgolden@2603-8000-9d00-3ed1-dd4f-298a-9c49-a0ed.res6.spectrum.com) |
| 10:05:42 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds) |
| 10:06:11 | × | hgolden quits (~hgolden@2603-8000-9d00-3ed1-dd4f-298a-9c49-a0ed.res6.spectrum.com) (Ping timeout: 245 seconds) |
| 10:16:15 | × | danse-nr3 quits (~danse@rm-19-33-5.service.infuturo.it) (Remote host closed the connection) |
| 10:17:04 | → | danse-nr3 joins (~danse@rm-19-33-5.service.infuturo.it) |
| 10:17:19 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds) |
| 10:18:47 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 10:20:50 | × | cimento quits (CO2@gateway/vpn/protonvpn/cimento) (Quit: WeeChat 4.1.2) |
| 10:21:46 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 256 seconds) |
| 10:22:02 | × | dhil quits (~dhil@2001:8e0:2014:3100:371a:4a41:b512:1e94) (Ping timeout: 260 seconds) |
| 10:22:57 | → | kalj joins (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) |
| 10:25:58 | × | drdo quits (~drdo@bl14-14-49.dsl.telepac.pt) (Remote host closed the connection) |
| 10:30:09 | → | drdo joins (~drdo@bl14-14-49.dsl.telepac.pt) |
| 10:30:37 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 10:37:56 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 10:38:57 | → | wib_jonas joins (~wib_jonas@business-37-191-60-209.business.broadband.hu) |
| 10:39:20 | → | Nixkernal joins (~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch) |
| 10:44:14 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 10:45:05 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 256 seconds) |
| 10:45:30 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 10:52:22 | × | kalj quits (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Quit: Client closed) |
| 10:52:37 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 11:03:37 | × | CiaoSen quits (~Jura@2a05:5800:285:ca00:ca4b:d6ff:fec1:99da) (Ping timeout: 276 seconds) |
| 11:04:25 | × | rvalue quits (~rvalue@user/rvalue) (Quit: ZNC - https://znc.in) |
| 11:04:49 | × | euleritian quits (~euleritia@dynamic-046-114-206-154.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
| 11:05:07 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 11:06:13 | → | xff0x joins (~xff0x@2405:6580:b080:900:c829:a839:8c15:e663) |
| 11:06:41 | → | rvalue joins (~rvalue@user/rvalue) |
| 11:07:52 | × | danse-nr3 quits (~danse@rm-19-33-5.service.infuturo.it) (Read error: Connection reset by peer) |
| 11:08:34 | → | danse-nr3 joins (~danse@rm-19-18-174.service.infuturo.it) |
| 11:10:21 | → | cimento joins (CO2@gateway/vpn/protonvpn/cimento) |
| 11:18:55 | → | chele joins (~chele@user/chele) |
| 11:21:26 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 11:22:06 | × | actioninja quits (~actioninj@user/actioninja) (Quit: see ya mane) |
| 11:22:49 | <idgaen> | Hi all |
| 11:24:07 | <idgaen> | I want to build a 2 dimensional array from a string which comes from a file. |
| 11:26:11 | <idgaen> | each lines in the file have the same length (140). I removed the newlines from the string, with (concat . lines). |
| 11:26:35 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 268 seconds) |
| 11:27:09 | <idgaen> | I want to use the array function to build an: UArray (Int, Int) Char |
| 11:28:59 | <idgaen> | so, I build a list of indices with: inds = [(x, y) | y <- [1..140], x <- [1..140]] -- There are 140 lines of length of 140 characters. |
| 11:30:31 | <idgaen> | but when I want to build the list of associative (index, char) that seems to loop forever. |
| 11:31:51 | → | __monty__ joins (~toonn@user/toonn) |
| 11:32:25 | <idgaen> | the associative list is built with [(i, c) | i <- inds, c <- s ] where s are all lines of file without newlines |
| 11:33:32 | <idgaen> | the length of s is 140*140, and the length of inds is the same |
| 11:34:41 | <idgaen> | I don't understand why that loop forever |
| 11:35:17 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 11:36:24 | <idgaen> | of course, I can build the array with listArray, but the indexes are reversed and the coordinate are represent by (y,x) what I don't want |
| 11:43:16 | → | tremon joins (~tremon@83.80.159.219) |
| 11:44:37 | × | cimento quits (CO2@gateway/vpn/protonvpn/cimento) (Ping timeout: 255 seconds) |
| 11:44:49 | <cheater> | when i see a *value* that's like Proxy @(Foo), what is the @? Proxy is a constructor from Data.Proxy. |
| 11:44:59 | → | Square2 joins (~Square4@user/square) |
| 11:45:07 | <cheater> | as in, foo = Proxy @(Foo) |
| 11:46:44 | <cheater> | oh it's TypeApplications |
| 11:48:35 | → | tomith joins (tomith@user/tomith) |
| 11:50:58 | <[Leary]> | > [ (i, c) | i <- [ (x, y) | y <- [1..3], x <- [1..3] ], c <- (concat . lines) "abc\ndef\nghi" ] |
| 11:50:59 | <lambdabot> | [((1,1),'a'),((1,1),'b'),((1,1),'c'),((1,1),'d'),((1,1),'e'),((1,1),'f'),((1... |
| 11:51:05 | <[Leary]> | > [ (i, c) | i <- [ (x, y) | y <- [1..3], x <- [1..3] ] | c <- (concat . lines) "abc\ndef\nghi" ] |
| 11:51:07 | <lambdabot> | [((1,1),'a'),((2,1),'b'),((3,1),'c'),((1,2),'d'),((2,2),'e'),((3,2),'f'),((1... |
| 11:51:35 | <[Leary]> | idgaen: One of these is a product, the other is a zip. I imagine you want the latter. |
| 11:52:26 | × | alp_ quits (~alp@2001:861:e3d6:8f80:6d8:4f2f:863e:ca1) (Ping timeout: 256 seconds) |
| 11:52:40 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 11:52:51 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 11:52:57 | → | alp_ joins (~alp@2001:861:e3d6:8f80:3d4b:b65f:a55a:e6ee) |
| 11:55:21 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Remote host closed the connection) |
| 11:58:39 | <idgaen> | [Leary]: yes, I want a zip, what I noticed after I wrote my messages. |
| 11:58:47 | × | mikess quits (~sam@user/mikess) (Ping timeout: 264 seconds) |
| 11:59:25 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 12:01:07 | <idgaen> | now, I don't understand what I did wrong, because now, it works. |
| 12:13:58 | × | danse-nr3 quits (~danse@rm-19-18-174.service.infuturo.it) (Ping timeout: 256 seconds) |
| 12:17:41 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 12:20:46 | × | xff0x quits (~xff0x@2405:6580:b080:900:c829:a839:8c15:e663) (Ping timeout: 256 seconds) |
| 12:22:31 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 12:22:32 | → | xff0x joins (~xff0x@ai096045.d.east.v6connect.net) |
| 12:24:13 | × | remedan quits (~remedan@ip-94-112-0-18.bb.vodafone.cz) (Ping timeout: 276 seconds) |
| 12:24:38 | → | mmhat joins (~mmh@p200300f1c72693d7ee086bfffe095315.dip0.t-ipconnect.de) |
| 12:25:58 | → | remedan joins (~remedan@ip-94-112-0-18.bb.vodafone.cz) |
| 12:26:43 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 268 seconds) |
| 12:26:58 | → | aztex joins (~aztex@195-176-96-198.net4.ethz.ch) |
| 12:27:39 | <aztex> | Hello I am try to turn on profiling for a Haskell executable I have but my build depends on a package that hasn't been compiled with profiling on |
| 12:28:02 | <aztex> | specifically the package is network-simple |
| 12:28:17 | <aztex> | so when I try to build with profiling on I get: |
| 12:28:18 | <aztex> | ``` |
| 12:28:18 | <aztex> | Could not find module ‘Network.Simple.TCP’ |
| 12:28:19 | <aztex> | Perhaps you haven't installed the profiling libraries for package ‘network-simple-0.4.5’? |
| 12:28:19 | <aztex> | ``` |
| 12:28:50 | <aztex> | Does it mean I have to locally recompile this pacakge with profiling on to get debug profiling? |
| 12:29:02 | <[exa]> | aztex: did you do `cabal configure --enable-profiling` ? |
| 12:29:11 | <aztex> | no |
| 12:29:24 | <[exa]> | I'd say it's usually required |
| 12:29:39 | <[exa]> | btw recompile of network-simple shouldn't be harsh |
| 12:30:24 | <aztex> | in which step should this be done? |
| 12:30:37 | → | aztex2 joins (~aztex@195-176-96-198.net4.ethz.ch) |
| 12:31:52 | <[exa]> | you probably have some package that you run using `cabal run` right? so in that same project you just do the configure with --enable-profiling and then it should work |
| 12:32:39 | <[exa]> | afaik it should pull all profiling-enabled modules etc |
| 12:32:49 | <[exa]> | if not, there's another problem and we'll need more info :] |
| 12:34:53 | <aztex2> | thanks giving that a shot! |
| 12:34:58 | × | aztex quits (~aztex@195-176-96-198.net4.ethz.ch) (Ping timeout: 250 seconds) |
| 12:38:47 | <[exa]> | well let's see if it works |
| 12:40:49 | <aztex2> | not sure what happened but I got this as a result |
| 12:40:50 | <aztex2> | ghc: panic! (the 'impossible' happened) |
| 12:40:50 | <aztex2> | (GHC version 9.2.8: |
| 12:40:51 | <aztex2> | lookupGlobal |
| 12:40:51 | <aztex2> | Failed to load interface for ‘GHC.Num.BigNat’ |
| 12:40:52 | <aztex2> | Perhaps you haven't installed the "p_dyn" libraries for package ‘ghc-bignum’? |
| 12:40:52 | <aztex2> | Use -v (or `:set -v` in ghci) to see a list of the files searched for. |
| 12:40:53 | <aztex2> | Call stack: |
| 12:40:53 | <aztex2> | CallStack (from HasCallStack): |
| 12:40:54 | <aztex2> | callStackDoc, called at compiler/GHC/Utils/Panic.hs:181:37 in ghc:GHC.Utils.Panic |
| 12:40:54 | <aztex2> | pprPanic, called at compiler/GHC/Tc/Utils/Env.hs:153:32 in ghc:GHC.Tc.Utils.Env |
| 12:42:11 | <[exa]> | aztex2: oh wow interesting |
| 12:42:40 | <[exa]> | (btw please use pastebin for the longer pastes, not a problem now but if we'd have 10 conversations pasting over each other here... D: ) |
| 12:43:01 | <[exa]> | aztex2: this came out of the configure? |
| 12:51:42 | <aztex2> | nah configure went fine |
| 12:51:47 | <aztex2> | this was the outcome of cabal build |
| 12:57:32 | → | misterfish joins (~misterfis@87.215.131.102) |
| 13:06:38 | <[exa]> | maybe `cabal clean` before, just to be sure |
| 13:12:41 | → | cimento joins (CO2@gateway/vpn/protonvpn/cimento) |
| 13:19:29 | <carbolymer> | is there an extension which could allow me catch this issue at compile-time instead https://bpa.st/YQMA ? Or just using field selectors in sum types is not safe? |
| 13:21:51 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 13:25:21 | ← | noscript parts (~james@user/earldouglas) () |
| 13:26:46 | × | mechap quits (~mechap@user/mechap) (Quit: WeeChat 4.1.2) |
| 13:27:19 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 13:28:06 | → | mechap joins (~mechap@user/mechap) |
| 13:31:33 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 13:36:50 | <lortabac> | carbolymer: I don't think there is an easy way to catch it at compile-time, but maybe there is a warning against partial field selectors |
| 13:37:38 | <carbolymer> | yes there is, but what I gather from this warning is to not use those in sum types |
| 13:37:47 | <carbolymer> | I was wondering If I can use them in a safe way |
| 13:37:59 | <carbolymer> | it seems there's none |
| 13:38:00 | <lortabac> | https://downloads.haskell.org/ghc/latest/docs/users_guide/using-warnings.html?highlight=partial%20field%20selectors#ghc-flag--Wpartial-fields |
| 13:38:17 | → | danse-nr3 joins (~danse@rm-19-18-174.service.infuturo.it) |
| 13:39:02 | <lortabac> | carbolymer: if you are looking for an extension that "magically" does this check when you enable it, then no |
| 13:39:42 | <lortabac> | there are various ways to solve this problem, each with its own trade-offs |
| 13:40:08 | <carbolymer> | yeah |
| 13:40:14 | <carbolymer> | no free lunch apparently |
| 13:41:03 | <[exa]> | carbolymer: if you really have single-case-specific behaviro, it might be better to have 2 separate types for both cases united by a typeclass interface or so |
| 13:41:11 | <exarkun> | Newish ghc has a warning about partial functions at their point of use, I think? Could ghc mark partial field selectors so that they trigger this same warning? |
| 13:41:22 | <[exa]> | anyway +1 for partiality warnings on |
| 13:41:27 | <[Leary]> | carbolymer: Not sure if it suits your purpose, but you can do things like this: https://play-haskell.tomsmeding.com/saved/HYOgh3RS |
| 13:41:43 | <[Leary]> | And hide the param with Some when inconvenient. |
| 13:42:17 | <[exa]> | wow cool |
| 13:44:03 | → | CiaoSen joins (~Jura@2a05:5800:285:ca00:ca4b:d6ff:fec1:99da) |
| 13:44:30 | <carbolymer> | [Leary]: haha totally overkill, but works, thanks |
| 13:51:17 | <carbolymer> | but still the condition is to have constructors with distinct types, otherwise one would run into the original problem |
| 13:52:37 | × | cimento quits (CO2@gateway/vpn/protonvpn/cimento) (Quit: WeeChat 4.1.2) |
| 13:56:55 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 13:58:19 | × | danse-nr3 quits (~danse@rm-19-18-174.service.infuturo.it) (Remote host closed the connection) |
| 13:58:59 | → | danse-nr3 joins (~danse@rm-19-18-174.service.infuturo.it) |
| 14:02:57 | → | lg188 joins (~lg188@82.18.98.230) |
| 14:03:42 | <lortabac> | probably the best alternative is to have each constructor take a single argument, which is a record |
| 14:03:58 | <exarkun> | Anyone have opinions on mono-traversable, esp. SemiSequence and perhaps isSet/isMap? |
| 14:05:03 | <exarkun> | I have a type with a [Entry] field and I wouldn't mind making [] parameter so so, eg, linear scan could be avoided by supplying the right type |
| 14:05:13 | <lortabac> | and then you can use optics if you want to avoid pattern-matching |
| 14:08:58 | <exarkun> | IsSet/IsMap I mean |
| 14:13:03 | × | dtman34 quits (~dtman34@c-76-156-89-180.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 14:14:58 | × | alp_ quits (~alp@2001:861:e3d6:8f80:3d4b:b65f:a55a:e6ee) (Ping timeout: 246 seconds) |
| 14:15:14 | <carbolymer> | lortabac: yes, that too, thanks |
| 14:16:07 | → | ddb joins (ddb@tilde.club) |
| 14:16:21 | → | alp_ joins (~alp@2001:861:e3d6:8f80:d720:d644:7314:8753) |
| 14:18:01 | × | mobivme quits (~mobivme@112.201.111.217) (Read error: Connection reset by peer) |
| 14:18:52 | → | shriekingnoise joins (~shrieking@186.137.175.87) |
| 14:19:38 | × | aztex2 quits (~aztex@195-176-96-198.net4.ethz.ch) (Quit: Client closed) |
| 14:22:13 | × | gooba quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection) |
| 14:22:31 | → | gooba joins (~gooba@90-231-13-185-no3430.tbcn.telia.com) |
| 14:24:51 | → | ystael joins (~ystael@user/ystael) |
| 14:25:52 | × | igemnace quits (~ian@user/igemnace) (Read error: Connection reset by peer) |
| 14:28:55 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 14:32:07 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds) |
| 14:33:19 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 14:37:39 | <cheater> | is there a common type that's like data Maybe3 e a = Error e | Just a | Nothing ? |
| 14:38:39 | → | edr joins (~edr@user/edr) |
| 14:40:26 | <kuribas> | These? |
| 14:40:37 | <[exa]> | cheater: isomorphic to `EitherT e Maybe a` ? |
| 14:40:39 | <kuribas> | https://hackage.haskell.org/package/these |
| 14:41:16 | <cheater> | [exa]: yes |
| 14:41:17 | <cheater> | kuribas: no |
| 14:41:20 | <dminuoso_> | I tend to just handroll them, because usually when there is three constructors, there is some semantic meaning to them |
| 14:41:23 | <kuribas> | or Either (Maybe e) a? |
| 14:41:34 | <cheater> | kuribas: no |
| 14:41:44 | <dminuoso_> | And in case of `This` and `That`, its really not clear how they differ. |
| 14:41:59 | <cheater> | well, This is this. |
| 14:42:03 | <cheater> | and That, well, that's that. |
| 14:42:18 | × | danse-nr3 quits (~danse@rm-19-18-174.service.infuturo.it) (Ping timeout: 252 seconds) |
| 14:42:28 | <ncf> | Either (Maybe e) a ≃ Either e (Maybe a) |
| 14:42:37 | → | igemnace joins (~ian@user/igemnace) |
| 14:42:51 | <cheater> | i hate that that's true |
| 14:42:53 | <kuribas> | cheater: Error e => Left $ Just e Just a => Right a Nothing -> Left $ Nothing |
| 14:43:05 | <[exa]> | cheater: kinda interesting which method of failure should be triggered by `empty` there |
| 14:43:15 | → | danse-nr3 joins (~danse@rm-19-18-174.service.infuturo.it) |
| 14:43:18 | <cheater> | idk |
| 14:43:19 | <cheater> | idc |
| 14:43:25 | <cheater> | time to go get some fast food |
| 14:43:25 | <cheater> | bbl |
| 14:44:08 | <[exa]> | glhf |
| 14:46:16 | <lortabac> | I use 'Either e (Maybe a)' sometimes if the meaning is clear enough |
| 14:46:26 | <lortabac> | otherwise a custom data type |
| 14:47:05 | → | wroathe joins (~wroathe@user/wroathe) |
| 14:47:22 | <[exa]> | at least this way kinda clarifies if it is the error or the value that is missing |
| 14:49:07 | × | danse-nr3 quits (~danse@rm-19-18-174.service.infuturo.it) (Ping timeout: 255 seconds) |
| 14:52:24 | <kuribas> | dminuoso_: you can see from the order of the type variables That b = success, This a = error. |
| 14:55:37 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 14:57:32 | <bwe> | how can I let textComment''' make throwError once there is no "span" of class "author"? https://github.com/benjaminweb/scalpel-exceptt/blob/main/src/Lib.hs#L136-L141 |
| 14:58:16 | <bwe> | ski: I've gone back and devised the problem statement from the ground up and worked my way until here. |
| 14:58:53 | <bwe> | What I want to understand right now is how can I inspect `author` and depend a control flow on it. |
| 15:00:40 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:01:38 | <bwe> | The next micro step would be to figure what `author` really is and then how can I case over its content. |
| 15:04:58 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds) |
| 15:06:04 | → | dtman34 joins (~dtman34@c-76-156-89-180.hsd1.mn.comcast.net) |
| 15:10:16 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds) |
| 15:11:02 | → | euleritian joins (~euleritia@dynamic-046-114-202-224.46.114.pool.telefonica.de) |
| 15:14:27 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
| 15:20:27 | → | danse-nr3 joins (~danse@151.47.48.103) |
| 15:20:46 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:21:19 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.0.5) |
| 15:22:27 | × | enviosity quits (~enviosity@176.254.244.83) (Ping timeout: 260 seconds) |
| 15:26:28 | → | zer0bitz_ joins (~zer0bitz@user/zer0bitz) |
| 15:30:29 | × | zer0bitz quits (~zer0bitz@user/zer0bitz) (Ping timeout: 240 seconds) |
| 15:30:58 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 260 seconds) |
| 15:36:55 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
| 15:39:43 | × | pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection) |
| 15:40:11 | → | pastly joins (~pastly@gateway/tor-sasl/pastly) |
| 15:46:36 | → | enviosity joins (~enviosity@176.254.244.83) |
| 15:48:15 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) (Remote host closed the connection) |
| 15:48:30 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) |
| 15:52:22 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 15:54:49 | × | misterfish quits (~misterfis@87.215.131.102) (Ping timeout: 255 seconds) |
| 16:00:29 | × | CiaoSen quits (~Jura@2a05:5800:285:ca00:ca4b:d6ff:fec1:99da) (Ping timeout: 240 seconds) |
| 16:01:20 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) (Remote host closed the connection) |
| 16:02:46 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) |
| 16:06:58 | × | euleritian quits (~euleritia@dynamic-046-114-202-224.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
| 16:07:18 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 16:11:19 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1) |
| 16:12:58 | × | vpan quits (~vpan@mail.elitnet.lt) (Quit: Leaving.) |
| 16:13:07 | <shapr> | @quote |
| 16:13:07 | <lambdabot> | gFunk says: [the main advantage of functional programs are that they're] incorrect the first 1000 times you try to compile it! |
| 16:15:37 | × | alp_ quits (~alp@2001:861:e3d6:8f80:d720:d644:7314:8753) (Ping timeout: 276 seconds) |
| 16:15:37 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 16:15:47 | → | euleritian joins (~euleritia@dynamic-046-114-202-224.46.114.pool.telefonica.de) |
| 16:16:08 | × | euleritian quits (~euleritia@dynamic-046-114-202-224.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
| 16:16:25 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 16:18:00 | → | cimento joins (CO2@gateway/vpn/protonvpn/cimento) |
| 16:19:13 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 16:19:13 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 16:19:20 | → | euleritian joins (~euleritia@dynamic-046-114-202-224.46.114.pool.telefonica.de) |
| 16:19:39 | × | cimento quits (CO2@gateway/vpn/protonvpn/cimento) (Client Quit) |
| 16:19:44 | × | euleritian quits (~euleritia@dynamic-046-114-202-224.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
| 16:20:03 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 16:22:42 | → | cimento joins (CO2@gateway/vpn/protonvpn/cimento) |
| 16:23:27 | × | cimento quits (CO2@gateway/vpn/protonvpn/cimento) (Client Quit) |
| 16:24:04 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 16:36:11 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 16:38:07 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds) |
| 16:40:57 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 16:41:57 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 16:47:56 | → | Guest|41 joins (~Guest|41@46.146.126.15) |
| 16:49:33 | × | Guest|41 quits (~Guest|41@46.146.126.15) (Client Quit) |
| 16:50:02 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:54:07 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 16:57:47 | → | todi1 joins (~todi@p4fd1aa52.dip0.t-ipconnect.de) |
| 16:57:53 | → | cimento joins (CO2@gateway/vpn/protonvpn/cimento) |
| 16:58:16 | × | todi quits (~todi@pd9571076.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 17:02:58 | todi1 | is now known as todi |
| 17:04:04 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) (Remote host closed the connection) |
| 17:05:43 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds) |
| 17:05:48 | × | wib_jonas quits (~wib_jonas@business-37-191-60-209.business.broadband.hu) (Ping timeout: 250 seconds) |
| 17:07:07 | → | AlexNoo__ joins (~AlexNoo@178.34.162.199) |
| 17:08:30 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 17:09:51 | × | hamster quits (~ham@user/ham) (Ping timeout: 256 seconds) |
| 17:09:54 | × | fendor quits (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection) |
| 17:10:52 | × | AlexNoo_ quits (~AlexNoo@5.139.232.120) (Ping timeout: 276 seconds) |
| 17:10:52 | × | AlexZenon quits (~alzenon@5.139.232.120) (Ping timeout: 276 seconds) |
| 17:12:26 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) |
| 17:14:23 | → | notzmv joins (~zmv@user/notzmv) |
| 17:15:06 | AlexNoo__ | is now known as AlexNoo |
| 17:16:30 | → | AlexZenon joins (~alzenon@178.34.162.199) |
| 17:17:47 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds) |
| 17:17:53 | → | euleritian joins (~euleritia@dynamic-046-114-202-224.46.114.pool.telefonica.de) |
| 17:22:10 | × | euleritian quits (~euleritia@dynamic-046-114-202-224.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
| 17:22:28 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 17:22:54 | × | cimento quits (CO2@gateway/vpn/protonvpn/cimento) (Quit: WeeChat 4.1.2) |
| 17:30:22 | × | danse-nr3 quits (~danse@151.47.48.103) (Ping timeout: 276 seconds) |
| 17:31:10 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 17:34:38 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 17:35:00 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 17:36:14 | → | mixfix41 joins (~plaguedog@user/mixfix41) |
| 17:45:26 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 256 seconds) |
| 17:46:39 | × | mechap quits (~mechap@user/mechap) (Quit: WeeChat 4.1.2) |
| 17:48:03 | → | billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) |
| 17:48:09 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 17:50:14 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:54:35 | → | alexherbo2 joins (~alexherbo@2a02-8440-3341-7ea2-2192-55be-5512-22f8.rev.sfr.net) |
| 17:55:28 | → | ft joins (~ft@p3e9bc784.dip0.t-ipconnect.de) |
| 17:55:39 | → | not_reserved joins (~not_reser@45.88.222.253) |
| 18:00:51 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 18:01:34 | × | zero quits (~z@user/zero) (Ping timeout: 276 seconds) |
| 18:03:08 | → | zero joins (~z@user/zero) |
| 18:03:59 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
| 18:04:07 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) (Remote host closed the connection) |
| 18:04:26 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 18:07:14 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 18:11:03 | → | tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net) |
| 18:23:08 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 18:32:59 | × | ddellacosta quits (~ddellacos@ool-44c73d16.dyn.optonline.net) (Ping timeout: 264 seconds) |
| 18:37:52 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) |
| 18:38:35 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:39:33 | → | danza joins (~francesco@151.47.18.116) |
| 18:48:15 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 18:48:16 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 18:48:16 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:52:08 | × | matijja quits (~matijja@193.77.181.201) (Quit: ZNC 1.8.2 - https://znc.in) |
| 18:53:08 | × | alexherbo2 quits (~alexherbo@2a02-8440-3341-7ea2-2192-55be-5512-22f8.rev.sfr.net) (Remote host closed the connection) |
| 18:53:29 | → | matijja joins (~matijja@193.77.181.201) |
| 18:53:57 | → | alexherbo2 joins (~alexherbo@2a02-8440-3341-7ea2-2192-55be-5512-22f8.rev.sfr.net) |
| 18:55:38 | → | mechap joins (~mechap@user/mechap) |
| 19:01:40 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 19:02:07 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds) |
| 19:02:35 | → | dhil joins (~dhil@2001:8e0:2014:3100:8b74:2f78:e0a3:7def) |
| 19:03:58 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 276 seconds) |
| 19:08:56 | × | matijja quits (~matijja@193.77.181.201) (Quit: ZNC 1.8.2 - https://znc.in) |
| 19:09:14 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) (Remote host closed the connection) |
| 19:12:26 | × | igemnace quits (~ian@user/igemnace) (Remote host closed the connection) |
| 19:12:44 | → | matijja joins (~matijja@193.77.181.201) |
| 19:15:41 | → | sabino joins (~sabino@user/sabino) |
| 19:16:08 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 19:18:16 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) |
| 19:24:10 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 19:24:20 | × | billchenchina quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Quit: Leaving) |
| 19:25:00 | → | lottaquestions joins (~nick@2607:fa49:503d:b200:7cfa:fcd1:a658:6a49) |
| 19:26:33 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 19:29:21 | × | matijja quits (~matijja@193.77.181.201) (Quit: ZNC 1.8.2 - https://znc.in) |
| 19:29:44 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 19:34:11 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds) |
| 19:35:59 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 264 seconds) |
| 19:42:23 | → | ystael joins (~ystael@user/ystael) |
| 19:47:00 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 19:54:10 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 19:57:05 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:57:18 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 19:57:27 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 256 seconds) |
| 19:59:11 | → | thegeekinside joins (~thegeekin@189.217.90.224) |
| 19:59:45 | → | alp_ joins (~alp@2001:861:e3d6:8f80:3dcc:e84c:21ec:43f6) |
| 19:59:47 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:09:51 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) (Remote host closed the connection) |
| 20:12:37 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 20:12:50 | × | danza quits (~francesco@151.47.18.116) (Ping timeout: 260 seconds) |
| 20:13:39 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 20:19:42 | <EvanR> | for today's part 2, I can't empirically see any errors, the code seems right, works on the example, but gives the wrong answer. I have 8 top level definitions and 1 of them is the example data. All I have to do is verify each one is correct in isolation right xD |
| 20:19:53 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 20:19:53 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 20:19:53 | → | wroathe joins (~wroathe@user/wroathe) |
| 20:20:45 | → | nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net) |
| 20:21:05 | × | not_reserved quits (~not_reser@45.88.222.253) (Quit: Client closed) |
| 20:21:43 | <EvanR> | might have to bust out unit tests or property tests or something |
| 20:26:23 | × | nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
| 20:27:07 | → | mobivme joins (~mobivme@112.201.111.217) |
| 20:27:42 | → | harveypwca joins (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b) |
| 20:28:09 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 20:30:38 | → | hc joins (~hc@mail.hce.li) |
| 20:45:54 | × | mobivme quits (~mobivme@112.201.111.217) (Remote host closed the connection) |
| 20:46:40 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) |
| 20:47:35 | → | Square joins (~Square@user/square) |
| 20:48:46 | × | Square2 quits (~Square4@user/square) (Ping timeout: 260 seconds) |
| 20:49:38 | <EvanR> | oof bug in my poker |
| 20:49:53 | <EvanR> | three of a kind is better than two pair |
| 20:50:01 | → | Guest56 joins (~Guest29@86-82-248-239.fixed.kpn.net) |
| 20:50:34 | <c_wraith> | my bug was that I didn't read the directions and sorted them like poker hands |
| 20:50:48 | <Guest56> | Hello, could someone help me with my homework? Im trying to make a CASloop but it doesnt work :( |
| 20:50:49 | <EvanR> | yeah I did that too |
| 20:50:49 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) (Ping timeout: 246 seconds) |
| 20:51:37 | <Guest56> | casloop :: IORef Int -> Int -> IO () |
| 20:51:37 | <Guest56> | casloop counter increment = do |
| 20:51:38 | <Guest56> | loop |
| 20:51:38 | <Guest56> | where |
| 20:51:39 | <Guest56> | loop = do |
| 20:51:39 | <Guest56> | ticket <- readForCAS counter |
| 20:51:40 | <Guest56> | (actualValue, _) <- peekTicket ticket |
| 20:51:40 | <Guest56> | let newValue = actualValue + increment |
| 20:51:41 | <Guest56> | success <- casIORef counter ticket newValue |
| 20:51:41 | <Guest56> | if success |
| 20:51:42 | <Guest56> | then return () |
| 20:51:42 | <Guest56> | else loop |
| 20:51:58 | <EvanR> | @where paste |
| 20:51:58 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
| 20:51:59 | <Guest56> | This does not work as ticket does not match IO as it is a int |
| 20:52:42 | <Rembane> | Guest56: You can go: peekTicket (readForCAS counter) |
| 20:54:04 | <EvanR> | the naming of these variables and operations might help distinguish IO actions from numbers |
| 20:54:10 | <Guest56> | Rembane This does not work, but here is the complete code. https://paste.tomsmeding.com/xXWlqNBj |
| 20:54:28 | × | Buggys quits (Buggys@shelltalk.net) (Ping timeout: 276 seconds) |
| 20:55:28 | <Rembane> | Guest56: What's the type of readForCAS? |
| 20:55:48 | <EvanR> | use <- to execute IO actions and bind the result, use let x = to just assign a name to a number (or IO action if you weren't trying to execute it) |
| 20:56:29 | <Guest56> | it says any |
| 20:57:01 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds) |
| 20:57:01 | <Guest56> | data.economics.Internal.ticket |
| 20:57:18 | <Guest56> | (IO(INT, bo)) |
| 20:57:33 | <Guest56> | the ticket is type int |
| 20:57:57 | <Guest56> | EvanR for some reason this does not work |
| 21:00:05 | <EvanR> | what is the actual error |
| 21:00:56 | <Guest56> | Couldn't match expected type: Data.Atomics.Internal.Ticket |
| 21:00:56 | <Guest56> | (IO (Int, b0)) |
| 21:00:57 | <Guest56> | with actual type: IO (Data.Atomics.Internal.Ticket a0) |
| 21:01:15 | × | mmhat quits (~mmh@p200300f1c72693d7ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 21:01:22 | <Guest56> | Thats with readForCAS |
| 21:01:27 | <Guest56> | and this is without: Couldn't match type ‘Int’ with ‘IO (Int, b0)’ |
| 21:01:28 | <Guest56> | Expected: Data.Atomics.Internal.Ticket (IO (Int, b0)) |
| 21:01:28 | <Guest56> | Actual: Data.Atomics.Internal.Ticket Int |
| 21:01:34 | → | mikess joins (~sam@user/mikess) |
| 21:02:32 | <EvanR> | what's the type of readForCAS |
| 21:03:42 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 21:04:00 | × | juri_ quits (~juri@faikvm.com) (Ping timeout: 252 seconds) |
| 21:04:33 | <Guest56> | Data.Atomics.Internal.Ticket |
| 21:04:34 | <Guest56> | (IO (Int, b0)) |
| 21:04:59 | <EvanR> | really, then it's not a function and you can't apply it to anything muchless ticket |
| 21:05:11 | <EvanR> | er, or counter |
| 21:05:55 | <Guest56> | Originally |
| 21:06:03 | <Guest56> | it did not have readForCAS |
| 21:06:18 | <Guest56> | But it still did not work |
| 21:06:25 | <Guest56> | (actualValue, _) <- peekTicket ticket |
| 21:06:31 | <Guest56> | This was originally there |
| 21:06:36 | <Guest56> | with ticket has type int |
| 21:06:42 | <EvanR> | what's the type of peekTicket |
| 21:06:58 | <Guest56> | IO (Int, Any) |
| 21:07:13 | <Guest56> | peekTicket :: forall a. Ticket a -> a |
| 21:07:13 | <Guest56> | Defined in ‘Data.Atomics’ (atomic-primops-0.8.4) |
| 21:07:13 | <EvanR> | really, then it's not a function and you can't apply it to anything muchless ticket |
| 21:07:14 | <Guest56> | _ :: Ticket (IO (Int, Any)) -> IO (Int, Any) |
| 21:07:22 | <EvanR> | what |
| 21:07:47 | <EvanR> | so what's the type of peekTicket |
| 21:08:22 | <Guest56> | its a function |
| 21:08:24 | <Guest56> | peekticket |
| 21:08:30 | <EvanR> | taking what |
| 21:08:59 | <Guest56> | It should take a ticket |
| 21:09:02 | <Guest56> | and output a ticket |
| 21:09:14 | <EvanR> | are you sure |
| 21:09:32 | <Guest56> | It says so in the documentation i thin |
| 21:09:32 | <EvanR> | one of your type signatures says it takes and returns not the same type |
| 21:09:33 | <Guest56> | peekTicket :: Ticket a -> aSource# |
| 21:09:33 | <Guest56> | A ticket contains or can get the usable Haskell value. This function does just that. |
| 21:09:40 | <Guest56> | a -> a |
| 21:09:44 | → | mobivme joins (~mobivme@112.201.111.217) |
| 21:09:54 | <Guest56> | means it takes a ticket a and gives a ticket back? |
| 21:10:03 | <EvanR> | that's the 4th type signature for peekTicket you've posted |
| 21:10:14 | <Guest56> | oh wait |
| 21:10:26 | <EvanR> | 4th unique type signature |
| 21:10:32 | <haskellbridge> | 12<Celestial> what's the best way to represent the steps of an "animation" within an application state? Right now I basically have something isomorphic to `(FrameInfo, [FrameInfo])` but that's not great for a few reasons. In other languages I would probably have `(Int, Array FrameInfo)` but im not sure if that's idiomatic here |
| 21:10:55 | <EvanR> | what's wrong with [FrameInfo] ? |
| 21:11:22 | <probie> | EvanR: It's `Ticket a -> a`, the `aSource#` is just because they've grabbed to much when they've gone to copy and paste |
| 21:11:24 | <Guest56> | I dont understand, what is a 4th type signature |
| 21:11:24 | <EvanR> | or (Int,[FrameInfo]) |
| 21:11:44 | × | dhil quits (~dhil@2001:8e0:2014:3100:8b74:2f78:e0a3:7def) (Ping timeout: 256 seconds) |
| 21:12:00 | <Guest56> | probie Yes this is correct |
| 21:12:13 | <EvanR> | peekTicket :: Ticket a -> a, alright that's progress |
| 21:13:04 | <haskellbridge> | 12<Celestial> The problem is that it needs special handling for an empty list to start with because then you can't represent the state or need to handle it seperately |
| 21:13:26 | <EvanR> | if you use an array or vector to hold the frameinfos, it can still be empty |
| 21:13:30 | <haskellbridge> | 12<Celestial> `(Int, [FrameInfo])` is better in that sense but it's also pretty inefficient |
| 21:13:31 | <EvanR> | technically |
| 21:13:58 | <EvanR> | kneejerk reaction is, don't have empty animations? |
| 21:14:22 | <EvanR> | [FrameInfo] is fine for small number of items |
| 21:15:09 | <haskellbridge> | 12<Celestial> right, but then you have the compiler complain about totality because the rest of the codebase deals with lists of data - I could make those `NonEmpty` I suppose |
| 21:15:11 | → | mmhat joins (~mmh@p200300f1c7269374ee086bfffe095315.dip0.t-ipconnect.de) |
| 21:15:25 | <EvanR> | NonEmpty FrameInfo would solve that yes |
| 21:15:32 | <haskellbridge> | 12<Celestial> but thanks for the input :) |
| 21:15:35 | <EvanR> | if it's an actual problem |
| 21:15:37 | <probie> | Guest56: I think what you want is just `actualValue <- peekTicket ticket` |
| 21:16:49 | × | sabino quits (~sabino@user/sabino) (Quit: Lambda _ -> x) |
| 21:16:59 | → | machinedgod joins (~machinedg@93-138-62-133.adsl.net.t-com.hr) |
| 21:17:06 | <probie> | or more likely `let actualValue = peekTicket ticket` if `ticket` is a `Ticket Int` and not a `Ticker (IO Int)` |
| 21:17:39 | <probie> | s/Ticker/Ticket/ |
| 21:18:34 | <Guest56> | probie That did solve the error, the ticket was ticket int |
| 21:19:49 | <Guest56> | I have one more problem, which is the last loop 'if success |
| 21:19:50 | <Guest56> | then return () |
| 21:19:50 | <Guest56> | else loop' |
| 21:19:57 | <EvanR> | if peekTicket ticket is an Int, then you can't execute it like an IO action |
| 21:20:06 | <EvanR> | x <- 3 won't work |
| 21:20:25 | → | bilegeek joins (~bilegeek@2600:1008:b042:9b48:fb5c:1866:504a:bda4) |
| 21:20:28 | <EvanR> | let x = 3 works |
| 21:21:04 | <Guest56> | succes is of type (Bool, Data.Atomics.Internal.Ticket Int), while I need the loop to go on if this is true |
| 21:21:07 | <Guest56> | how can i archieve that |
| 21:21:33 | <EvanR> | :t fst |
| 21:21:34 | <lambdabot> | (a, b) -> a |
| 21:21:45 | <EvanR> | or use pattern matching to unpack the pair and get the Bool |
| 21:22:57 | <Guest56> | let (bol, int) = success |
| 21:22:58 | <Guest56> | if bol |
| 21:22:58 | <Guest56> | then return () |
| 21:22:59 | <Guest56> | else loop |
| 21:23:09 | <Guest56> | how do you guys put the code brackets inhere |
| 21:23:44 | <EvanR> | you don't need any more brackets |
| 21:23:52 | <EvanR> | but indentation could use some work |
| 21:25:40 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
| 21:28:22 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:32:02 | <Guest56> | Thank guys |
| 21:32:05 | <Guest56> | I think it works now |
| 21:34:41 | → | pavonia joins (~user@user/siracusa) |
| 21:35:41 | → | carcif^ joins (~carcif@c-98-242-74-66.hsd1.ga.comcast.net) |
| 21:44:12 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) |
| 21:49:05 | × | alp_ quits (~alp@2001:861:e3d6:8f80:3dcc:e84c:21ec:43f6) (Ping timeout: 256 seconds) |
| 22:01:18 | × | Guest56 quits (~Guest29@86-82-248-239.fixed.kpn.net) (Quit: Client closed) |
| 22:07:24 | → | alp_ joins (~alp@2001:861:e3d6:8f80:27cf:eb18:e4f:ec96) |
| 22:10:42 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 22:12:14 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:14:37 | × | oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 255 seconds) |
| 22:19:37 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 276 seconds) |
| 22:19:55 | × | harveypwca quits (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b) (Quit: Leaving) |
| 22:20:00 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 22:40:08 | × | Vajb quits (~Vajb@2001:999:704:f9f4:5471:a9dd:fd2a:5408) (Ping timeout: 256 seconds) |
| 22:41:33 | → | wroathe joins (~wroathe@50.205.197.50) |
| 22:41:33 | × | wroathe quits (~wroathe@50.205.197.50) (Changing host) |
| 22:41:33 | → | wroathe joins (~wroathe@user/wroathe) |
| 22:43:13 | → | ddellacosta joins (~ddellacos@ool-44c73d16.dyn.optonline.net) |
| 22:43:25 | × | ddellacosta quits (~ddellacos@ool-44c73d16.dyn.optonline.net) (Client Quit) |
| 22:52:07 | × | acidjnk_new quits (~acidjnk@p200300d6e72b9388205ae88ccd349b12.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 22:57:35 | × | remedan quits (~remedan@ip-94-112-0-18.bb.vodafone.cz) (Ping timeout: 264 seconds) |
| 22:59:39 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:01:11 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 245 seconds) |
| 23:01:34 | × | lottaquestions quits (~nick@2607:fa49:503d:b200:7cfa:fcd1:a658:6a49) (Ping timeout: 268 seconds) |
| 23:01:51 | × | mechap quits (~mechap@user/mechap) (Quit: WeeChat 4.1.2) |
| 23:02:35 | → | remedan joins (~remedan@ip-94-112-0-18.bb.vodafone.cz) |
| 23:06:26 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:11:10 | × | chomwitt quits (~chomwitt@2a02:587:7a09:c300:1ac0:4dff:fedb:a3f1) (Ping timeout: 246 seconds) |
| 23:16:07 | <DerDummNemetzkii> | how does one solve cyclic graph dependencies in haskell? |
| 23:17:24 | <geekosaur> | symbolic references is one waty. "tying the knot" is another |
| 23:17:36 | <geekosaur> | https://wiki.haskell.org/Tying_the_Knot |
| 23:18:38 | <DerDummNemetzkii> | thanks |
| 23:24:20 | × | alp_ quits (~alp@2001:861:e3d6:8f80:27cf:eb18:e4f:ec96) (Ping timeout: 256 seconds) |
| 23:26:52 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:34:30 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 23:36:07 | <EvanR> | do you mean module dependencies |
| 23:43:07 | <DerDummNemetzkii> | EvanR, aye |
| 23:43:33 | <DerDummNemetzkii> | ModuleB imports ModuleA which imports ModuleB |
| 23:43:54 | <geekosaur> | oh dear |
| 23:43:56 | <EvanR> | an hs-boot file will tell ghc about the loops and allow the compilation to go through |
| 23:43:59 | <EvanR> | however |
| 23:44:07 | <EvanR> | probably best to just not do that |
| 23:44:28 | <DerDummNemetzkii> | kinda hard to when I need modules to have a parent. |
| 23:44:53 | <EvanR> | there is usually a way to refactor it so you don't have an import loop |
| 23:45:37 | <DerDummNemetzkii> | But this is mandatory. I have, say, Car module which imports Engine and Engine needs a reference back to the parent called "car_owner" |
| 23:45:38 | → | mechap joins (~mechap@user/mechap) |
| 23:45:59 | × | mmhat quits (~mmh@p200300f1c7269374ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.1.2) |
| 23:46:11 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds) |
| 23:46:37 | × | alexherbo2 quits (~alexherbo@2a02-8440-3341-7ea2-2192-55be-5512-22f8.rev.sfr.net) (Remote host closed the connection) |
| 23:46:54 | <DerDummNemetzkii> | So that the engine knows what car it belongs to. |
| 23:47:39 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 256 seconds) |
| 23:53:45 | × | tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in) |
| 23:56:21 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 23:57:21 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
| 23:58:41 | → | jargon joins (~jargon@174-22-221-51.phnx.qwest.net) |
All times are in UTC on 2023-12-07.