Home liberachat/#haskell: Logs Calendar

Logs on 2024-01-29 (liberachat/#haskell)

00:05:04 a51 joins (a51@gateway/vpn/protonvpn/a51)
00:07:17 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 240 seconds)
00:09:57 sudden joins (~cat@user/sudden)
00:10:18 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
00:13:09 × mud quits (~mud@user/kadoban) (Quit: quit)
00:15:24 rvalue joins (~rvalue@user/rvalue)
00:21:48 × caconym quits (~caconym@user/caconym) (Quit: bye)
00:27:08 caconym joins (~caconym@user/caconym)
00:31:01 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds)
00:34:08 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
00:50:19 × athan quits (~athan@173-042-095-241.biz.spectrum.com) (Ping timeout: 256 seconds)
00:58:11 × shapr quits (~user@c-24-218-186-89.hsd1.ma.comcast.net) (Ping timeout: 264 seconds)
01:10:00 sroso joins (~sroso@user/SrOso)
01:10:07 a51 joins (a51@gateway/vpn/protonvpn/a51)
01:16:31 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
01:21:37 × ft quits (~ft@p3e9bcb1e.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
01:25:15 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
01:25:20 tamer joins (~tamer@user/tamer)
01:25:35 × yaroot quits (~yaroot@p2987138-ipngn7501souka.saitama.ocn.ne.jp) (Remote host closed the connection)
01:26:12 yaroot joins (~yaroot@p2987138-ipngn7501souka.saitama.ocn.ne.jp)
01:27:01 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:24d0:730b:131f:e5b3) (Remote host closed the connection)
01:34:13 × causal quits (~eric@50.35.85.7) (Quit: WeeChat 4.1.1)
01:37:13 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
01:38:00 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
01:42:07 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
01:55:17 <tri> hi, i'd like to define an instance of Eq on newtype Bag t = Bag {items :: t String}
01:55:44 <tri> for that t, for that t, i'd like for it to be a list
01:56:07 <tri> not really a list, but a general abstract of list, e.g. vector, array, list
01:56:52 <tri> but im not sure which typeclass would represent such abstract of a list-like datastrcutre.
01:57:16 <tri> im thinking about a Traversable, but im not sure if that's appropriate
01:57:51 <tri> an equivalent of what im thinking about is either IColletion or IList in .NET
01:57:55 <c_wraith> Foldable is enough to give you toList
01:58:34 <monochrom> "instance Show1 t => Show (Bag t)" may help.
01:59:13 <tri> c_wraith: could you elaborate why you pick Foldable to represent an abstract list?
01:59:19 <c_wraith> :t toList
01:59:20 <lambdabot> Foldable t => t a -> [a]
01:59:25 × stef204 quits (~stef204@user/stef204) (Quit: WeeChat 4.2.1)
01:59:31 <tri> monochrom: you mean aside from Eq, i should also implement an instance of Show as well?
01:59:52 <c_wraith> Foldable implies an ordered traversal of a data type is possible
02:00:01 <jackdk> monochrom: I think you mean `Eq1` but yeah. Although here you only have one type applied to `t` so I'm not sure why `deriving newtype (Eq (t String)) => Eq (Bag t)` does not suffice
02:00:03 <c_wraith> For whatever "ordered" means for your type
02:00:11 <tri> c_wraith: but actually, im not sure if my thinking like that is correct in Haskell. That is, I try to go for an abstract data type, rather than a concrete data type like a Vector or a List or an Array
02:00:52 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:18c9:b5e1:a528:fba1)
02:01:17 <tri> in OOP, it's natural for me to use an interface, and let the calling function supplies the concrete data data structure
02:01:37 <tri> im not sure if i do it like that in Haskell
02:02:24 <c_wraith> it depends on what you're trying to do
02:02:41 <EvanR> abstract data type just means you don't expose the implementation
02:02:46 Sgeo joins (~Sgeo@user/sgeo)
02:02:49 <EvanR> so in that sense Vector and Array are abstract
02:03:00 <c_wraith> I could totally see a reason to write instance Foldable t => Eq (Bag t)
02:03:12 <c_wraith> But... I could also see reasons not to
02:04:00 <EvanR> but you could put yet another layer of abstract on top of that
02:04:03 <c_wraith> The one big issue people coming from OOP will have, though, is that you still can't use Eq or Ord to compare a (Bag []) with a (Bag Vector)
02:04:36 <c_wraith> those won't typecheck long before the instance definitions are examined
02:05:23 × igemnace quits (~ian@user/igemnace) (Ping timeout: 264 seconds)
02:05:36 <monochrom> Oh! Yeah s/Show1/Eq1/
02:06:38 <monochrom> But it is very possible that all use cases of Bag t requires Foldable t anyway.
02:07:09 <monochrom> Like, the name is "Bag", would you even expect a contravariant functor? >:)
02:07:24 <c_wraith> It's also possible that the entire data type doesn't make sense.
02:07:28 <tri> well ok i will just go with Foldable and switch out to anotehr typeclass if i need to
02:07:36 <c_wraith> It depends on what you're *trying* to do
02:07:47 <tri> c_wraith: just testing out the water to see how far i can go
02:07:50 <c_wraith> If you're trying to hide the data type, it's entirely wrong
02:08:05 <tri> c_wraith: no particular reason, just trying to mimic my OOP experience
02:08:24 <monochrom> Ah yeah hidding the type is best done by controlling export.
02:08:36 <tri> i could've been fine just using list
02:08:52 <EvanR> also, isn't abstract data type "dual" to OOP, in some sense
02:09:05 <EvanR> in context of the expression problem, or something
02:10:11 × mima quits (~mmh@aftr-62-216-211-12.dynamic.mnet-online.de) (Ping timeout: 264 seconds)
02:10:40 <monochrom> If you want to do OO in Haskell, you don't use type classes, you simply don't. Haskell type classes have nothing to do with OO.
02:10:59 <monochrom> You use a record type that has methods as fields.
02:11:15 <monochrom> Because that's what objects really are.
02:11:38 × xff0x quits (~xff0x@ai085147.d.east.v6connect.net) (Ping timeout: 260 seconds)
02:12:53 <monochrom> In fact, that's what objects in javascript are, too.
02:15:45 <monochrom> Algebraic data types are dual to OO in the expression problem.
02:15:58 <monochrom> Abstract data types are instead OO minus subclassing.
02:17:22 <monochrom> On second though, I think you're right too.
02:18:21 <EvanR> I can't find the blog post / paper where I saw that
02:18:54 <monochrom> I'm now convinced! So no worries. :)
02:19:33 <tri> EvanR: so when i use Foldable, i need to iterate over the 2 abstract lists to compare them. I think of zip for that. But zip works with the concrete list. So how could i iterate over each item in the 2 Foldables?
02:19:44 <monochrom> "I did my own research" is so yesteryear. It's now "I did my own thinking". >:)
02:19:47 <tri> EvanR: again, this is to implement Eq
02:20:06 <EvanR> when you zip do they have the same shape? like two lists of the same length do?
02:20:15 <EvanR> if so, you can use Applicative
02:20:18 <tri> oh didn't think about that
02:20:33 <tri> well i guess if it's not the same length, then it's not Eq then
02:20:44 <EvanR> then how does zipping work
02:21:16 <tri> zip is just a way to compare 2 abstract list that came to my mind, obviously i could be wrong
02:21:30 <EvanR> oh, I thought you were trying to define a zip like operation.
02:21:39 <EvanR> the XY problem continues
02:21:44 <tri> my goal is to implement Eq
02:21:57 <EvanR> so, implement it?
02:22:16 <tri> yes, but i need a way to loop over the Foldable
02:22:28 <tri> get each item between each of them and compare
02:22:38 <EvanR> ok I guess that's one way to do it
02:23:07 <EvanR> but if it's an abstract data type, behind the scenes you can simply implement an equals operation and use that in the Eq instance
02:23:07 <tri> but... how do i loop over a foldable...
02:23:18 <EvanR> toList
02:23:21 <tri> ah
02:23:21 <tri> !
02:24:44 <jackdk> tri: also `traversable_` or `for_`
02:26:03 <tri> jackdk: my first reaction is it would work, i need to implement Eq for a Foldable t => t item. So the underscore version will not be able to implement the == of Eq, because the "swallow" the result
02:26:13 <tri> would NOT* work. My bad
02:26:31 yagkasha joins (uid629884@user/yagkasha)
02:26:32 <tri> they* "swallow"
02:27:22 <jackdk> I'm not sure what you're trying to do. I almost never have to write `Eq` instances by hand.
02:27:49 <tri> I have this newtype Bag t = Bag {items :: t String}. So that's why i need to implement Eq
02:27:50 <jackdk> Are you saying that you want both collections to have the same strings in the same order?
02:28:21 × qqq quits (~qqq@92.43.167.61) (Remote host closed the connection)
02:28:22 <tri> well i was about to mention the order part
02:28:40 <EvanR> this doesn't look like it's going to work, from the implications of the name Bag
02:28:47 <tri> EvanR: is there any function i can use to go from Foldable to Set?
02:28:58 <EvanR> S.fromList . toList
02:28:59 <tri> because on second thought, i don't care about the order
02:29:15 <jackdk> You will also use duplicates if you go via Set
02:29:16 <tri> gotcha thank you
02:29:30 <jackdk> https://www.irccloud.com/pastebin/kqtvrPPc/BagDerivingEq.hs
02:30:08 <EvanR> Bag is sort of implying you might have duplicates and they matter
02:30:14 <EvanR> so AAAB is different from AB
02:30:58 <tri> jackdk: i don't understand the part => Eq (Bag t) in your pastebin.
02:31:27 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:18c9:b5e1:a528:fba1) (Remote host closed the connection)
02:31:44 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:18c9:b5e1:a528:fba1)
02:31:46 <tri> EvanR: each item should be unique, so i don't have duplicate. So i think the set difference operation will be good here
02:32:26 <EvanR> so you're trying to implement an abstract Set
02:32:32 <jackdk> It defines an instance for `Eq (Bag t)` which requires an instance of `Eq (t String)`
02:32:43 <tri> EvanR: ... right
02:32:58 <EvanR> newtype MySet a = MySet (Set a) xD
02:33:35 TonyStone joins (~TonyStone@074-076-057-186.res.spectrum.com)
02:34:07 <tri> well i guess my solution is just use a set then
02:35:02 <tri> jackdk: im not used to that syntax, i guess because of the language extension. Could you rewrite that without the language extension please
02:35:15 <jackdk> Foldable probably won't give you enough of what you need in a performant way, because you'll probably end up writing insert/remove/member in terms of foldr or equivalent functions, meaning that everything will be basically linear.
02:36:03 <jackdk> https://www.irccloud.com/pastebin/yPv3Y0fK/BagWithoutStandaloneDeriving.hs
02:37:00 <EvanR> if you need a Set, then use literal Set is something that really helps code reuse in haskell. If you need a pair and A and B, use (A,B) instead of trying to make an AbstractEnterprisePair which tries to leave open how that works
02:37:23 <jackdk> You may have seen `instance Eq a => Eq [a]` in your travels, saying "if we can test items for equality, we can test lists for equality". This is the same, but UndecidableInstances allows the prerequisites to be larger than the instance being defined.
02:37:28 <EvanR> it helps code reuse. (though, strict pair is something good to use instead)
02:38:29 <tri> "This is the same, but UndecidableInstances allows the prerequisites to be larger than the instance being defined." not understand what you mean by larger
02:38:55 <tri> and also, i understand instance Eq a => Eq [a], but i don't understand (Eq (t String)) => Eq (Bag t)
02:39:03 <tri> that (Eq (t String)) is really weird to me
02:39:12 × dfii^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
02:39:27 <tri> im only used to SomeTypeClass t => Eq (Bag t)
02:40:11 <tri> EvanR: ok thank you
02:40:12 fun-safe-math joins (~fun-safe-@c-24-21-106-247.hsd1.or.comcast.net)
02:45:41 <jackdk> `t` is a type constructor, so `t String` is a type. `Eq (t String)` is a constraint just like `[a]`, except it's the type constructor which is a type variable
02:47:41 <tri> im still confused. For SomeTypeClass t => Eq (Bag t), i read it as: t must be an instance of SomeTypeClass, now my instance of Eq for Bag t is yada yada
02:47:59 <tri> how do i read it for Eq (t String)?
02:48:09 <jackdk> Exactly the same. `t String` must be an instance of `Eq`
02:48:48 <tri> hmm
02:49:17 <tri> so far, im only familiar with restaining the type of the free type variable alone, aka t
02:49:26 bilegeek joins (~bilegeek@2600:1008:b02f:a7fe:2faf:a4be:4db8:1a8c)
02:49:26 <tri> now you have t coupled with String
02:49:30 <tri> so idk what to make of it
02:49:45 <tri> like
02:50:01 <geekosaur> instead of having a fixed "container" and a variable type "inside", you have a fixed type "inside" and a variable "container"
02:50:36 <geekosaur> (t String) could be ([] String) (aka [String]), Vector String, Set String, etc.
02:50:41 <tri> in the newtype Bag t = Bag {items :: t String}. Im *only* concern about the left part Bag t, i don't care about the right part, when i implement an instance of Eq for Bag t
02:51:09 <tri> so that it would make sense for me if you have something SomeTypeClass t =>
02:51:32 <tri> but now you have it as SomeTypeClass (t String) =>
02:51:37 <tri> which totally throw me off garud
02:53:04 <tri> ah wait
02:53:09 <tri> because t is * -> *
02:53:15 <jackdk> yes
02:53:32 <tri> alright that makes sense now
02:53:41 tri head hurts
02:53:58 <tri> thanks jackdk and geekosaur
02:57:52 <EvanR> yeah I'd call that f
02:57:52 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:58:38 <EvanR> since it's probably a Functor
02:59:14 <jackdk> Yeah but for foldables it's traditionally `t`. I suppose because it's commonly `t` in `Traversable`, because `f` is used for the `Applicative` in `sequence :: (Traversable t, Applicative f) => t (f a) -> f (t a)` and `traverse`
02:59:56 <jackdk> (And similarly for `sequence_` and `traverse_` on `Foldable`
03:00:23 <EvanR> fair
03:06:02 <tri> i have a vector and would like to convert to Set, the only way is Set.fromList . toList right?
03:07:39 <geekosaur> yes
03:08:37 <tri> ty'
03:15:35 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
03:17:20 arahael_ joins (~arahael@1.145.10.174)
03:18:01 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:18c9:b5e1:a528:fba1) (Remote host closed the connection)
03:19:20 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9d5c:3643:2ba5:d457)
03:24:01 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9d5c:3643:2ba5:d457) (Ping timeout: 260 seconds)
03:33:07 <monochrom> Wait we're arguing letters now?!
03:34:48 <monochrom> put :: MonadState f x => f -> x f
03:36:10 <EvanR> all types named ModuleName.t and classes ModuleName.c
03:36:22 <EvanR> er, .T and .C
03:36:28 <monochrom> :)
03:37:41 <monochrom> put :: MonadState φ ψ => ψ -> φ ψ -- why not >:)
03:46:49 × td_ quits (~td@i53870912.versanet.de) (Ping timeout: 255 seconds)
03:47:09 <c_wraith> that's not the right type for put!
03:47:15 <jackdk> monochrom: consider \phi and \varphi
03:48:49 td_ joins (~td@i53870921.versanet.de)
04:05:05 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 260 seconds)
04:05:16 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d90a:8962:8a2b:5610)
04:09:15 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
04:09:26 × arahael_ quits (~arahael@1.145.10.174) (Read error: Connection reset by peer)
04:09:59 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
04:12:40 <ski> EvanR : not sure if "dual" is the right way to phrase it. but both can be understood as relating to different ways of using existentials
04:13:06 <ski> "Abstract data types are instead OO minus subclassing." -- OO bundles operations (methods) up with state, with Abstract Data Types (ADTs) you pass around naked states. ADTs can do "binary methods" (and "cloning methods"), something which OO can't do directly
04:13:31 <monochrom> jackdk: hahaha
04:14:13 <EvanR> all variables are a but with different fonts
04:14:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d90a:8962:8a2b:5610) (Remote host closed the connection)
04:14:37 <monochrom> MonadState a a -> a -> a a
04:14:47 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
04:15:09 <monochrom> "dependent type programming" >:)
04:15:32 <EvanR> lol
04:16:04 <ski> perhaps we could allow ANSI SGR escapes to be part of identifiers ?
04:17:27 <jackdk> monochrom: "terms depend on type [face]"
04:17:28 <ski> naturally, we'd translate source, using ncurses, depending on the value of `TERM', before looking up identifiers in other packages
04:17:58 <ski> (or more specifically, translate the identifiers read from source)
04:18:11 <jackdk> ski: "types depend on TERM". Also https://colorforth.github.io/
04:18:15 ski types on palm
04:18:22 <probie> > let (⍺) = (+) in let α = 26 in α ⍺ α
04:18:24 <lambdabot> 52
04:18:30 <monochrom> The missing corner of the lambda cube where type depends on type!
04:19:08 <ski> perhaps we need an APL package for Haskell
04:20:04 <haskellbridge> 05<i​rregularsphere> ski: "naked state" so functional programming is OO but you hold the state instead of packing it in objects, is this true?
04:20:06 <jackdk> That's when one is overly comfortable with -XUnicodeSyntax
04:20:28 <probie> ski: as in a mess of unicode symbols, or something like numpy?
04:20:40 <ski> irregularsphere : i said with ADTs you pass around naked state, not with OO
04:20:56 <haskellbridge> 05<i​rregularsphere> ah i misunderstood
04:26:00 <ski> probie : approximating APL symbolism. see "Is Haskell Fast?" in 2009-02-06 at <https://augustss.blogspot.com/2009/02/is-haskell-fast-lets-do-simple.html>,"More Basic" in 2009-02-7 at <http://augustss.blogspot.com/2009/02/more-basic-not-that-anybody-should-care.html>, both by augustss
04:29:45 <ski> irregularsphere : more specifically, imagine a queue. with ADT approach you have `data QueueOps a = forall q. MkQOps {empty :: q,enqueue :: a -> q -> q,dequeue :: q -> Maybe (q,a)}'. after defining e.g. `someQueueImpl :: QueueOps a' or `packgedCharQueueImpl :: QueueOps Char', you open the record, bringing the skolem `q' into (a big) scope, and then pass around raw values ("states") of type `q', inside that
04:29:51 <ski> scope, invoking the operations on that directly
04:33:14 <ski> (s/packged/packed/)
04:33:20 <ski> irregularsphere : with OO approach, you have `data Queue = forall q. MkQ {qState :: q,enqueue :: a -> q -> q,dequeue :: q -> Maybe (q,a)}', and then define `enqueueQ :: a -> Queue a -> Queue a',`dequeueQ :: Queue a -> Maybe (Queue a,a)' (by unwrapping operations ("methods") from the state, applying the appropriate operation, then rewrapping the resulting state with the operations again). then a
04:33:26 <ski> "class"/"class constructor" (in the OO sense) would be `emptyQueueClass :: Queue a' or `emptyPackedCharQueue :: Queue Char'
04:34:40 <ski> note that with `foo :: Queue a -> Queue a -> ...', you can't assume that both input queues use the same implementation. at best, you can invoke an internal operation on one queue, which can access that one's internal state, and which then has to call provided operations on the other queue, in order to indirectly poke at its state. you can't really do "binary methods"
04:35:56 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
04:37:02 <ski> while with ADT, you could easily add a `merge :: q -> q -> q' operation for priority queues, e.g. (with the OO approach, trying to define `mergePQ :: Ord a => PQueue a -> PQueue a -> PQueue a' in terms of an internal operation `merge :: Ord a => q -> q -> q', the problem is that each input priority queue has its own, bundled, version of each operation, and they're incompatible with each other)
04:39:53 × bilegeek quits (~bilegeek@2600:1008:b02f:a7fe:2faf:a4be:4db8:1a8c) (Remote host closed the connection)
04:42:42 × jargon quits (~jargon@211.sub-174-205-230.myvzw.com) (Remote host closed the connection)
04:43:00 bilegeek joins (~bilegeek@2600:1008:b02f:a7fe:2faf:a4be:4db8:1a8c)
04:45:58 igemnace joins (~ian@user/igemnace)
04:46:04 × yagkasha quits (uid629884@user/yagkasha) (Quit: Connection closed for inactivity)
04:50:04 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 256 seconds)
04:53:20 aforemny_ joins (~aforemny@2001:9e8:6cc3:900:11e8:80e2:687f:11d6)
04:53:52 × aforemny quits (~aforemny@2001:9e8:6cdf:ca00:229d:373b:2363:176f) (Ping timeout: 255 seconds)
05:14:10 × fun-safe-math quits (~fun-safe-@c-24-21-106-247.hsd1.or.comcast.net) ()
05:14:55 × wagle quits (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
05:15:48 fun-safe-math joins (~fun-safe-@c-24-21-106-247.hsd1.or.comcast.net)
05:17:55 <probie> ski: I think you'd really struggle to end up with anything that looks like APL. Let's say I wanted `sum [1..10]`. In APL that looks like `+/ ⍳ 10` (or probably `+/ 1 + ⍳ 10` since we should have `⎕IO←0` as default)
05:18:28 <probie> You'd definitely have to add a lot more whitespace
05:19:32 <probie> Since whilst APL doesn't care about `+/` or + /`, Haskell Certainly does
05:21:03 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
05:22:13 <probie> Also, you're going to need something on the left hand side, but even something like `apl + / 1 + ⍳ 10` won't work because of the two symbols in a row
05:26:16 <probie> I guess we can probably introduce some additional constructors to tie things together. `apl +OP/ 1 + MON⍳ 10`, but it's looking nowhere near as great as the BASIC implementation at this point
05:27:23 <probie> it also doesn't help that Haskell's numeric operators have the wrong precedence (all APL functions are right associative with the same precedence)
05:27:33 <tri> hi, im trying to do a combinatoric of 2 of a list of items using list comprehension
05:27:51 <tri> [(x, y) | x <- list, y <- list, x /= y]
05:27:55 <tri> this is what i have so far
05:28:13 <probie> > [(x, y) | x <- [1..5], y <- [1..5], x /= y]
05:28:15 <lambdabot> [(1,2),(1,3),(1,4),(1,5),(2,1),(2,3),(2,4),(2,5),(3,1),(3,2),(3,4),(3,5),(4,...
05:28:34 <probie> > [(x, y) | x <- [1..3], y <- [1..3], x /= y] -- smaller
05:28:36 <lambdabot> [(1,2),(1,3),(2,1),(2,3),(3,1),(3,2)]
05:28:59 <tri> that's permutation, as in you have (1,2) and (2,1)
05:29:21 <probie> Ah, so you want something like
05:29:36 <tri> i could get away with not doing list comprehension if there is a function for that. I think there is definitely a function for it
05:29:36 <Axman6> > tails "abcd"
05:29:37 <lambdabot> ["abcd","bcd","cd","d",""]
05:29:45 <tri> nno
05:29:48 <probie> > [(x, y) | x <- [1..3], y <- [x+1..3], x /= y]
05:29:50 <lambdabot> [(1,2),(1,3),(2,3)]
05:29:51 <tri> im looking for a 5C2
05:30:28 <tri> 5C2 is a math combinatoric operation
05:30:43 <Axman6> > let comb xss = [(x,y) | (x:xs) <- tails xss, y <- xs, x /= y] in comb "abcd"
05:30:44 <tri> sorry for the 5 there
05:30:45 <lambdabot> [('a','b'),('a','c'),('a','d'),('b','c'),('b','d'),('c','d')]
05:30:47 <tri> it's nC2
05:32:20 <tri> Axman6: [(x,y) | (x:xs) <- tails xss, y <- xs, x /= y] is not compilable
05:32:51 <tri> oh sorry im wrong. If lamdabot can do it then it's compiable
05:33:04 <Axman6> yes :)
05:33:14 <tri> my repl says tails is not inscope
05:33:21 <Axman6> import Data.List
05:33:24 <tri> oh wait because of name collision
05:33:27 <Axman6> @hoogle tails
05:33:28 <lambdabot> Data.List tails :: [a] -> [[a]]
05:33:28 <lambdabot> Data.List.NonEmpty tails :: Foldable f => f a -> NonEmpty [a]
05:33:28 <lambdabot> GHC.OldList tails :: [a] -> [[a]]
05:33:36 <tri> it's ambiguous in my repl
05:38:16 wagle joins (~wagle@quassel.wagle.io)
05:38:17 <ski> @let select :: Alternative i => [a] -> i (a,[a]); select [ ] = empty; select (x:xs) = pure (x,xs) <|> fmap (x :) <$> select xs
05:38:19 <lambdabot> Defined.
05:38:29 <tri> Axman6: your solution works. But it's tricky. There has to be a function that does it
05:38:44 <ski> > [(x,y) | (x,xs) <- select [2,3,5,7],y <- xs]
05:38:46 <lambdabot> [(2,3),(2,5),(2,7),(3,2),(3,5),(3,7),(5,2),(5,3),(5,7),(7,2),(7,3),(7,5)]
05:39:07 <ski> > [(x,y) | x:xs <- tails [2,3,5,7],y <- xs]
05:39:09 <lambdabot> [(2,3),(2,5),(2,7),(3,5),(3,7),(5,7)]
05:40:01 <Axman6> I diagree that my solution it aat all tricky. But look in Data.List and see if it has what you're looking for
05:40:14 <ski> .. is there a reason you wanted to use `/=', apart from removing the diagonal ?
05:40:47 <Axman6> yeah I kept it because it seemed important, but I would personally do a filter (join (/=))
05:40:59 <Axman6> un, uncurry in there too
05:41:40 <ski> isn't `join (/=)' just `const False' ?
05:41:44 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
05:41:46 <ski> oh
05:42:22 <Axman6> :t join (uncurry (/=))
05:42:23 <lambdabot> error:
05:42:23 <lambdabot> • Couldn't match type ‘Bool’ with ‘(a, a) -> a1’
05:42:23 <lambdabot> Expected type: (a, a) -> (a, a) -> a1
05:42:42 <Axman6> :t (uncurry (/=))
05:42:42 <ski> tri : if you already know your lists won't have duplicates, there's no reason to use `/=' here
05:42:43 <lambdabot> Eq a => (a, a) -> Bool
05:42:48 <Axman6> that one =)
05:42:52 <ski> right
05:43:26 <ski> probie : oh, yea .. too bad :/
05:43:31 <tri> https://hackage.haskell.org/package/combinatorial-0.1.1/docs/Combinatorics.html has the tuples function which does what i ned
05:43:51 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Client Quit)
05:44:00 <tri> thank you both
05:44:04 <Axman6> @hoogle [a] -> [(a,a)]
05:44:05 <lambdabot> Number.Positional sliceVertPair :: [a] -> [(a, a)]
05:44:05 <lambdabot> Algorithms.Geometry.LineSegmentIntersection.Naive pairs :: [a] -> [(a, a)]
05:44:05 <lambdabot> Data.Geometry.Arrangement.Internal allPairs :: [a] -> [(a, a)]
05:44:26 <Axman6> there's probably lots of places a similar thing is defined
05:48:01 trev joins (~trev@user/trev)
05:53:03 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 256 seconds)
05:53:22 × fansly quits (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93) (Ping timeout: 246 seconds)
05:54:13 fansly joins (~fansly@182.0.174.92)
06:06:35 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
06:08:22 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
06:08:57 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
06:09:34 michalz joins (~michalz@185.246.207.205)
06:16:32 × fansly quits (~fansly@182.0.174.92) (Read error: Connection reset by peer)
06:16:47 fansly joins (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93)
06:18:52 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
06:19:16 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:19:33 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
06:19:50 euleritian joins (~euleritia@dynamic-176-000-152-096.176.0.pool.telefonica.de)
06:22:12 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
06:23:02 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
06:27:17 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 240 seconds)
06:27:34 × michalz quits (~michalz@185.246.207.205) (Quit: ZNC 1.8.2 - https://znc.in)
06:30:28 michalz joins (~michalz@185.246.207.221)
06:32:23 × fansly quits (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93) (Remote host closed the connection)
06:46:35 fansly joins (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93)
06:47:23 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
06:48:27 × mokee quits (~mokee@37.228.215.150) (Quit: off)
06:50:25 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds)
06:52:06 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds)
07:00:07 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
07:01:42 notzmv joins (~zmv@user/notzmv)
07:01:50 acidjnk_new joins (~acidjnk@p200300d6e737e756882f209ddca8eb35.dip0.t-ipconnect.de)
07:06:21 Square joins (~Square4@user/square)
07:08:44 × Square2 quits (~Square@user/square) (Ping timeout: 252 seconds)
07:11:02 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
07:12:39 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
07:14:38 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
07:16:24 × destituion quits (~destituio@2a02:2121:304:cc78:d9dc:8709:4c3b:d0d2) (Quit: Quit)
07:16:58 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 255 seconds)
07:17:55 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 256 seconds)
07:24:59 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:26:00 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
07:26:25 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:29:19 × phma quits (phma@2001:5b0:212a:bae8:aa84:1310:c00c:b4dd) (Read error: Connection reset by peer)
07:30:32 phma joins (phma@2001:5b0:215a:d678:f408:ffdb:4b4d:84f0)
07:33:04 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
07:35:48 × bilegeek quits (~bilegeek@2600:1008:b02f:a7fe:2faf:a4be:4db8:1a8c) (Quit: Leaving)
07:44:40 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
07:45:54 × fansly quits (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93) (Remote host closed the connection)
07:47:25 yeahitsme joins (~bob@2a01:799:15e7:a300:e9b5:215b:7150:c682)
07:47:29 × yeahitsme quits (~bob@2a01:799:15e7:a300:e9b5:215b:7150:c682) (Changing host)
07:47:29 yeahitsme joins (~bob@user/yeahitsme)
07:48:29 fansly joins (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93)
07:48:50 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
07:49:22 danse-nr3 joins (~danse@151.47.239.140)
07:49:37 × mqlnv quits (~tripod@47.154.25.27) (Ping timeout: 264 seconds)
07:51:02 × euleritian quits (~euleritia@dynamic-176-000-152-096.176.0.pool.telefonica.de) (Read error: Connection reset by peer)
07:51:09 mqlnv joins (~tripod@47.154.25.27)
07:51:19 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
07:51:43 × m1dnight quits (~christoph@78-22-2-15.access.telenet.be) (Quit: WeeChat 4.2.1)
07:52:16 oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
07:52:25 m1dnight joins (~christoph@78-22-2-15.access.telenet.be)
07:54:48 × yeahitsme quits (~bob@user/yeahitsme) (Ping timeout: 256 seconds)
07:55:00 × czy quits (~user@114.226.59.181) (Read error: Connection reset by peer)
07:55:35 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds)
07:56:37 czy joins (~user@114.226.59.181)
07:58:23 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:02:02 × sroso quits (~sroso@user/SrOso) (Read error: Connection reset by peer)
08:03:47 × [exa] quits (~exa@user/exa/x-3587197) (Quit: client change)
08:04:23 [exa] joins (~exa@user/exa/x-3587197)
08:06:38 sroso joins (~sroso@user/SrOso)
08:09:20 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
08:13:49 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds)
08:22:24 mima joins (~mmh@aftr-62-216-211-164.dynamic.mnet-online.de)
08:31:23 × fansly quits (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93) (Read error: Connection reset by peer)
08:37:12 zetef joins (~quassel@95.77.17.251)
08:39:29 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
08:42:20 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
08:44:03 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 256 seconds)
08:46:28 fansly joins (~fansly@103.3.221.54)
08:52:10 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:55:32 __monty__ joins (~toonn@user/toonn)
08:57:16 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
08:58:06 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 260 seconds)
08:58:34 × eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (Ping timeout: 260 seconds)
08:59:55 eL_Bart0 joins (eL_Bart0@dietunichtguten.org)
09:00:11 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
09:01:02 × ell quits (~ellie@user/ellie) (Quit: Leaving)
09:04:35 × fansly quits (~fansly@103.3.221.54) (Ping timeout: 256 seconds)
09:05:22 fansly joins (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93)
09:07:58 × eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (Ping timeout: 246 seconds)
09:10:19 eL_Bart0 joins (eL_Bart0@dietunichtguten.org)
09:10:57 fendor joins (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
09:13:50 × fansly quits (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93) (Remote host closed the connection)
09:14:29 × mcfrdy quits (~mcfrdy@user/mcfrdy) (Ping timeout: 260 seconds)
09:15:15 qqq joins (~qqq@92.43.167.61)
09:15:20 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 255 seconds)
09:15:23 adanwan_ joins (~adanwan@gateway/tor-sasl/adanwan)
09:15:41 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
09:16:14 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
09:16:30 mcfrdy joins (~mcfrdy@user/mcfrdy)
09:16:38 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
09:16:59 × eugenrh quits (~eugenrh@2a01:4f9:c011:265::1) (Ping timeout: 268 seconds)
09:18:01 × dyniec quits (~dyniec@dybiec.info) (Ping timeout: 255 seconds)
09:18:41 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
09:18:41 ec joins (~ec@gateway/tor-sasl/ec)
09:19:34 eugenrh joins (~eugenrh@static.20.60.21.65.clients.your-server.de)
09:20:13 dyniec joins (~dyniec@dybiec.info)
09:20:30 fansly joins (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93)
09:21:11 × adanwan_ quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 255 seconds)
09:22:56 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 252 seconds)
09:23:37 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
09:25:09 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
09:30:06 rembo10 joins (~rembo10@main.remulis.com)
09:33:19 athan joins (~athan@173-042-095-241.biz.spectrum.com)
09:36:02 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 255 seconds)
09:38:26 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
09:42:35 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
09:47:48 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
09:49:42 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
09:50:00 × qqq quits (~qqq@92.43.167.61) (Read error: Connection reset by peer)
09:50:20 cfricke joins (~cfricke@user/cfricke)
09:50:36 × fansly quits (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93) (Ping timeout: 268 seconds)
09:52:06 × danse-nr3 quits (~danse@151.47.239.140) (Ping timeout: 256 seconds)
09:52:11 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
09:52:12 zetef joins (~quassel@95.77.17.251)
09:52:37 fansly joins (~fansly@182.0.137.161)
09:54:37 qqq joins (~qqq@92.43.167.61)
09:56:46 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds)
09:57:16 CiaoSen joins (~Jura@2a05:5800:281:fa00:ca4b:d6ff:fec1:99da)
09:57:53 zetef_ joins (~quassel@95.77.17.251)
09:58:00 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 268 seconds)
10:01:50 danse-nr3 joins (~danse@151.37.255.140)
10:08:02 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
10:08:48 × fansly quits (~fansly@182.0.137.161) (Read error: Connection reset by peer)
10:09:09 fansly joins (~fansly@173-245-211-164.sin.as54203.net)
10:09:25 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
10:09:46 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds)
10:09:46 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 255 seconds)
10:11:15 × zetef_ quits (~quassel@95.77.17.251) (Ping timeout: 260 seconds)
10:14:02 <kuribas> We have some python code where the previous guy wrote lots of useless layers and boilerplate code.
10:14:25 <kuribas> I wonder if I could use the haskell python parser to rewrite this code, by removing useless classes etc...
10:14:51 <kuribas> https://hackage.haskell.org/package/hpython
10:14:51 <danse-nr3> sheesh the faith we have in automation these days is ridiculous
10:15:19 <kuribas> semantic preserving rewrite steps are fine.
10:15:49 <danse-nr3> just semantic? Easy one then
10:16:04 <kuribas> Sort of, because semantics in Python are often vague.
10:16:17 <tomsmeding> kuribas: how many lines of code are we talking about
10:16:19 <danse-nr3> clearly the irony did not make it through
10:16:34 × fansly quits (~fansly@173-245-211-164.sin.as54203.net) (Ping timeout: 276 seconds)
10:16:46 fansly joins (~fansly@182.0.166.225)
10:16:48 <kuribas> tomsmeding: sadly we have whole packages written in this style.
10:16:58 <tomsmeding> also almost no change in python is semantics-preserving because reflection is a thing
10:17:37 <tomsmeding> surely the useless code is not _so_ obviously structured that it's easy to write a bespoke pass that eliminates it?
10:18:15 <tomsmeding> I appreciate that it's more fun to hack on a compiler than on legacy code, but I question the time-efficiency :p
10:18:50 <kuribas> maybe some kind of partial evaluation?
10:18:57 <tomsmeding> reflection
10:19:07 <tomsmeding> almost nothing you can do to a python program is truly semantics-preserving
10:19:19 <tomsmeding> you'd have to make assumptions about what the users of the packages are doing
10:19:31 <tomsmeding> at which point you're writing a bespoke pass for this particular set of libraries in your usecase
10:19:31 <kuribas> tomsmeding: right, but this was an application.
10:19:37 <tomsmeding> right
10:20:37 <tomsmeding> what about a human-guided procedure?
10:20:51 <kuribas> tomsmeding: that's sort of what I had in mind.
10:21:03 <kuribas> Small steps guided by a human.
10:21:06 <tomsmeding> load a (set of) python package(s) into memory as ASTs, and have the human say "inline this function"
10:21:28 <tomsmeding> which is impossible in the presence of higher-orderness or class inheritance
10:21:33 <tomsmeding> but anyway
10:22:02 <kuribas> tomsmeding: I can make some assumptions, like that methods are not changed dynamically (except for decorators).
10:22:08 <kuribas> Decorators could be inlined.
10:22:27 <tomsmeding> are there classes? Do they use virtual methods (i.e. inheritance)?
10:22:44 <tomsmeding> it's true that decorators could probably be inlined fine
10:23:16 <tomsmeding> grep your code for __getitem__ first
10:23:34 <kuribas> tomsmeding: yeah, there are lots of AbstractBaseClasses that do nothing.
10:25:02 <kuribas> I could turn a class into a dataclass, and all methods into functions. The local class variables become a dictionary that is passed through each function.
10:25:45 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
10:27:35 <tomsmeding> as long as you have good and comprehensive tests :)
10:27:50 <kuribas> right :)
10:31:27 Feuermagier joins (~Feuermagi@user/feuermagier)
10:31:36 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds)
10:32:15 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 260 seconds)
10:34:41 × nicos quits (~nsm@2800:2131:5400:883:28f6:1624:5755:79b0) (Ping timeout: 256 seconds)
10:37:03 <phma> I got the progress bar working in the parallelized function, using unsafePerformIO.
10:39:01 nicos joins (~nsm@186.141.200.117)
10:40:02 <kuribas> phma: why not embrance IO?
10:40:04 × fansly quits (~fansly@182.0.166.225) (Read error: Connection reset by peer)
10:40:31 <kuribas> If you are using a progress bar it means you are sequential anyway.
10:40:36 fansly joins (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93)
10:40:57 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d90a:8962:8a2b:5610)
10:41:47 <kuribas> Or find a pure way to represent "progress", and hook the progressbar into that.
10:42:35 <phma> embrance?
10:43:05 <danse-nr3> embrace like it was france
10:43:09 × turlando quits (~turlando@user/turlando) (Remote host closed the connection)
10:44:23 turlando joins (~turlando@user/turlando)
10:44:47 <phma> The function will take at least an hour when I'm finished with it; it's a cryptanalysis which calls the cipher function many times and computes statistics.
10:45:14 <phma> Several instances of the cipher run in parallel.
10:45:57 <kuribas> Is this for blockchain?
10:46:01 <phma> no
10:46:35 <danse-nr3> well they run in parallel but probably they would report to the same thread that can embrace IO to display progress?
10:47:06 <kuribas> danse-nr3: well, reporting to thread is IO ....
10:47:12 <phma> how do they report?
10:51:14 <phma> it's https://github.com/phma/wring-twistree ; only one cryptanalysis has a progress bar yet, but I'll add it to the others
10:51:21 × fendor quits (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
10:52:35 fendor joins (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
10:53:21 gehmehgeh joins (~user@user/gehmehgeh)
10:54:10 <kuribas> I just wonder if the way I code with static types would match with how you code dynamicly with tests: To make small changes, and check each time if the tests still work.
10:54:49 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
10:56:29 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
10:57:27 <Hecate> kuribas: sure it does
10:57:32 <Hecate> you just test different things
10:57:38 <Hecate> but TDD is very nice to do in Haskell
10:59:25 xff0x joins (~xff0x@2405:6580:b080:900:7000:b18f:89a0:e9bd)
10:59:37 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 256 seconds)
11:00:42 <kuribas> In haskell I don't end up writing a lot of tests.
11:00:54 <kuribas> But in Python it seems almost a requirement.
11:01:07 × danse-nr3 quits (~danse@151.37.255.140) (Quit: Leaving)
11:02:43 <[exa]> kuribas: I'm not risking less than 100% coverage AND autotested docs in dynamic languages anymore :D
11:02:43 × sroso quits (~sroso@user/SrOso) (Quit: Leaving :))
11:13:29 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
11:14:39 pavonia joins (~user@user/siracusa)
11:16:19 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 268 seconds)
11:18:21 mmhat joins (~mmh@p200300f1c73bf41cee086bfffe095315.dip0.t-ipconnect.de)
11:18:25 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 264 seconds)
11:22:53 × fansly quits (~fansly@2001:448a:2010:476e:c9c:17f1:874c:ee93) (Remote host closed the connection)
11:26:16 × nicos quits (~nsm@186.141.200.117) (Ping timeout: 255 seconds)
11:27:17 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
11:28:43 × xff0x quits (~xff0x@2405:6580:b080:900:7000:b18f:89a0:e9bd) (Ping timeout: 260 seconds)
11:28:50 nicos joins (~nsm@186.141.165.4)
11:30:41 xff0x joins (~xff0x@ai085147.d.east.v6connect.net)
11:31:15 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
11:35:43 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 255 seconds)
11:35:45 × acidjnk_new quits (~acidjnk@p200300d6e737e756882f209ddca8eb35.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
11:38:36 × califax quits (~califax@user/califx) (Remote host closed the connection)
11:39:45 califax joins (~califax@user/califx)
11:42:05 × nicos quits (~nsm@186.141.165.4) (Ping timeout: 252 seconds)
11:43:15 × califax quits (~califax@user/califx) (Remote host closed the connection)
11:43:36 califax joins (~califax@user/califx)
11:44:18 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
11:44:53 euleritian joins (~euleritia@dynamic-176-006-189-135.176.6.pool.telefonica.de)
11:44:57 nicos joins (~nsm@199.253.243.23)
11:46:40 fansly joins (~fansly@103.3.221.54)
11:49:24 × euleritian quits (~euleritia@dynamic-176-006-189-135.176.6.pool.telefonica.de) (Ping timeout: 256 seconds)
11:49:32 tremon joins (~tremon@83.80.159.219)
11:49:52 euleritian joins (~euleritia@dynamic-176-006-198-247.176.6.pool.telefonica.de)
11:49:58 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
11:54:30 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 256 seconds)
11:55:19 × euleritian quits (~euleritia@dynamic-176-006-198-247.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
11:55:37 euleritian joins (~euleritia@77.22.252.56)
12:00:10 × fansly quits (~fansly@103.3.221.54) (Ping timeout: 256 seconds)
12:01:03 fansly joins (~fansly@182.0.171.189)
12:04:11 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
12:05:44 dhruvasagar joins (~dhruvasag@2401:4900:62fd:7384:5d1d:5cfa:8450:6f8)
12:08:03 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
12:12:02 × dhruvasagar quits (~dhruvasag@2401:4900:62fd:7384:5d1d:5cfa:8450:6f8) (Quit: WeeChat 4.1.2)
12:12:15 dhruvasagar joins (~dhruvasag@2401:4900:62fd:7384:5d1d:5cfa:8450:6f8)
12:13:43 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 256 seconds)
12:14:43 × fansly quits (~fansly@182.0.171.189) (Remote host closed the connection)
12:15:26 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:21:39 × dhruvasagar quits (~dhruvasag@2401:4900:62fd:7384:5d1d:5cfa:8450:6f8) (Ping timeout: 256 seconds)
12:24:25 × trev quits (~trev@user/trev) (Ping timeout: 260 seconds)
12:25:04 a51 joins (a51@gateway/vpn/protonvpn/a51)
12:28:46 waldo joins (~waldo@user/waldo)
12:31:06 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
12:36:35 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
12:39:37 alexherbo2 joins (~alexherbo@2a02-8440-3241-a2f0-1d99-57f3-31fe-fa1c.rev.sfr.net)
12:41:03 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 256 seconds)
12:42:09 trev joins (~trev@user/trev)
12:46:29 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
12:51:54 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 260 seconds)
12:53:38 notzmv joins (~zmv@user/notzmv)
12:58:51 acidjnk_new joins (~acidjnk@p200300d6e737e728886c6af3a169d6ea.dip0.t-ipconnect.de)
13:03:32 danse-nr3 joins (~danse@151.35.152.95)
13:06:42 <danse-nr3> would anyone help me with intuition about `awaitForever :: Monad m => (i -> ConduitT i o m r) -> ConduitT i o m () `? A conduit is awaiting forever on an i, but then for each i another conduit is returned consuming another is
13:09:49 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
13:13:35 a51 joins (a51@gateway/vpn/protonvpn/a51)
13:15:07 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds)
13:15:24 rosco joins (~rosco@175.136.156.77)
13:16:48 <c_wraith> danse-nr3: it transforms a function that takes an i and returns a Conduit into a Conduit that feeds that function with values it receives via repeatedly awaiting
13:17:18 <danse-nr3> cheers c_wraith !
13:17:22 <c_wraith> danse-nr3: since the function returns a Conduit, it can do things like yielding an o
13:17:39 <c_wraith> danse-nr3: or performing m effects
13:17:48 <danse-nr3> makes sense
13:25:05 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
13:25:54 gehmehgeh joins (~user@user/gehmehgeh)
13:27:01 × mmhat quits (~mmh@p200300f1c73bf41cee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.2.1)
13:30:45 × Square quits (~Square4@user/square) (Ping timeout: 268 seconds)
13:31:52 <c_wraith> It also *could* await itself, but... that would get confusing. Probably don't do that.
13:34:50 yagkasha joins (uid629884@id-629884.hampstead.irccloud.com)
13:35:02 × yagkasha quits (uid629884@id-629884.hampstead.irccloud.com) (Changing host)
13:35:02 yagkasha joins (uid629884@user/yagkasha)
13:36:14 Lycurgus joins (~georg@li1192-118.members.linode.com)
13:36:14 × Lycurgus quits (~georg@li1192-118.members.linode.com) (Changing host)
13:36:14 Lycurgus joins (~georg@user/Lycurgus)
13:37:42 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
13:40:06 <danse-nr3> v
13:40:16 dhruvasagar joins (~dhruvasag@49.207.206.234)
13:43:23 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds)
13:44:44 × waldo quits (~waldo@user/waldo) (Ping timeout: 252 seconds)
13:45:20 ell joins (~ellie@user/ellie)
13:45:56 × qqq quits (~qqq@92.43.167.61) (Remote host closed the connection)
13:53:54 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:55:38 × igemnace quits (~ian@user/igemnace) (Read error: Connection reset by peer)
13:57:43 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
14:00:09 × nicos quits (~nsm@199.253.243.23) (Read error: Connection reset by peer)
14:01:50 nicos joins (~nsm@199.253.243.23)
14:04:09 × nicos quits (~nsm@199.253.243.23) (Read error: Connection reset by peer)
14:04:31 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Quit: WeeChat 4.1.2)
14:05:07 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 246 seconds)
14:05:14 nicos joins (~nsm@199.253.243.23)
14:07:19 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:11:56 igemnace joins (~ian@user/igemnace)
14:16:49 thegeekinside joins (~thegeekin@189.180.65.186)
14:19:54 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
14:30:51 × rosco quits (~rosco@175.136.156.77) (Quit: Lost terminal)
14:31:02 dhruvasagar joins (~dhruvasag@49.207.206.234)
14:44:42 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
14:45:38 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 255 seconds)
14:46:53 × danse-nr3 quits (~danse@151.35.152.95) (Ping timeout: 252 seconds)
14:47:42 chiselfuse joins (~chiselfus@user/chiselfuse)
14:48:52 mrd joins (~mrd@145.107.129.12)
14:49:04 × mrd quits (~mrd@145.107.129.12) (Changing host)
14:49:04 mrd joins (~mrd@user/mrd)
14:49:38 × mrd quits (~mrd@user/mrd) (Client Quit)
15:00:03 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
15:00:04 mokee joins (~mokee@37.228.215.150)
15:04:57 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
15:07:11 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 264 seconds)
15:10:48 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Quit: WeeChat 4.1.2)
15:13:45 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
15:13:52 × califax quits (~califax@user/califx) (Remote host closed the connection)
15:14:12 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
15:15:34 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
15:15:43 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:16:01 califax joins (~califax@user/califx)
15:17:40 × califax quits (~califax@user/califx) (Remote host closed the connection)
15:18:11 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
15:18:16 califax joins (~califax@user/califx)
15:18:49 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
15:23:54 × ddellacosta quits (~ddellacos@ool-44c73d16.dyn.optonline.net) (Ping timeout: 268 seconds)
15:24:13 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
15:24:49 euleritian joins (~euleritia@dynamic-176-006-187-020.176.6.pool.telefonica.de)
15:31:18 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
15:31:40 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
15:35:15 dhruvasagar joins (~dhruvasag@49.207.206.234)
15:37:38 × alexherbo2 quits (~alexherbo@2a02-8440-3241-a2f0-1d99-57f3-31fe-fa1c.rev.sfr.net) (Remote host closed the connection)
15:38:00 alexherbo2 joins (~alexherbo@2a02-8440-3241-a2f0-25f6-2463-e80a-c3aa.rev.sfr.net)
15:42:34 × alexherbo2 quits (~alexherbo@2a02-8440-3241-a2f0-25f6-2463-e80a-c3aa.rev.sfr.net) (Ping timeout: 250 seconds)
15:43:40 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds)
15:47:44 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 255 seconds)
15:48:43 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
15:49:02 × nicos quits (~nsm@199.253.243.23) (Ping timeout: 252 seconds)
15:53:45 waldo joins (~waldo@user/waldo)
15:53:52 duncan_ is now known as duncan
16:07:45 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 256 seconds)
16:11:57 nicos joins (~nsm@186.143.197.185)
16:18:59 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 260 seconds)
16:19:38 dhruvasagar joins (~dhruvasag@49.207.206.234)
16:24:17 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 260 seconds)
16:28:47 × CiaoSen quits (~Jura@2a05:5800:281:fa00:ca4b:d6ff:fec1:99da) (Ping timeout: 260 seconds)
16:32:13 × dolio quits (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in)
16:34:05 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
16:36:28 dhruvasagar joins (~dhruvasag@49.207.206.234)
16:38:31 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d90a:8962:8a2b:5610) (Remote host closed the connection)
16:38:54 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d90a:8962:8a2b:5610)
16:40:13 dolio joins (~dolio@130.44.134.54)
16:41:11 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 256 seconds)
16:42:02 average joins (uid473595@user/average)
16:47:26 dhruvasagar joins (~dhruvasag@49.207.206.234)
16:49:54 × nicos quits (~nsm@186.143.197.185) (Read error: Connection reset by peer)
16:51:41 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 240 seconds)
16:54:22 nicos joins (~nsm@199.253.243.23)
16:58:51 dhruvasagar joins (~dhruvasag@49.207.206.234)
17:02:55 × euleritian quits (~euleritia@dynamic-176-006-187-020.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
17:03:18 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:03:30 × waldo quits (~waldo@user/waldo) (Ping timeout: 268 seconds)
17:04:07 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.1.2)
17:08:44 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 268 seconds)
17:08:59 waldo joins (~waldo@user/waldo)
17:13:13 × waldo quits (~waldo@user/waldo) (Ping timeout: 255 seconds)
17:17:13 × ridcully quits (~ridcully@p508ac914.dip0.t-ipconnect.de) (Quit: WeeChat 4.1.2)
17:17:29 ridcully joins (~ridcully@p508ac914.dip0.t-ipconnect.de)
17:19:36 waldo joins (~waldo@user/waldo)
17:21:09 Erutuon joins (~Erutuon@user/erutuon)
17:21:42 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
17:22:01 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
17:34:54 mc47 joins (~mc47@xmonad/TheMC47)
17:36:27 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
17:37:45 tri_ joins (~tri@2607:fb90:552c:d345:90cc:4a85:515e:d21b)
17:40:47 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 264 seconds)
17:48:52 dhruvasagar joins (~dhruvasag@49.207.206.234)
17:49:19 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
17:51:51 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 260 seconds)
17:53:31 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 276 seconds)
17:54:57 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
17:55:08 HikariNee joins (~HikariNee@49.43.1.30)
17:55:30 × HikariNee quits (~HikariNee@49.43.1.30) (Remote host closed the connection)
17:55:47 dhruvasagar joins (~dhruvasag@49.207.206.234)
17:58:05 × tri_ quits (~tri@2607:fb90:552c:d345:90cc:4a85:515e:d21b) (Ping timeout: 260 seconds)
18:00:31 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 256 seconds)
18:01:00 dhruvasagar joins (~dhruvasag@49.207.206.234)
18:01:19 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
18:01:59 Guest57 joins (~Guest70@137.122.64.218)
18:03:16 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 276 seconds)
18:04:54 × michalz quits (~michalz@185.246.207.221) (Quit: ZNC 1.8.2 - https://znc.in)
18:05:03 × hueso quits (~root@user/hueso) (Ping timeout: 256 seconds)
18:05:06 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:05:07 destituion joins (~destituio@2a02:2121:304:cc78:cd0b:f6d2:1dd2:3990)
18:05:37 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 256 seconds)
18:11:09 × mima quits (~mmh@aftr-62-216-211-164.dynamic.mnet-online.de) (Ping timeout: 260 seconds)
18:11:53 dhruvasagar joins (~dhruvasag@49.207.206.234)
18:13:40 rvalue joins (~rvalue@user/rvalue)
18:14:42 × ricardo__ quits (~ricardo@shabang.toppoint.de) (Read error: Connection reset by peer)
18:15:56 Tuplanolla joins (~Tuplanoll@91-159-68-95.elisa-laajakaista.fi)
18:16:47 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 264 seconds)
18:17:36 dhruvasagar joins (~dhruvasag@49.207.206.234)
18:17:59 hueso joins (~root@user/hueso)
18:21:01 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
18:22:29 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 252 seconds)
18:22:42 a51 joins (a51@gateway/vpn/protonvpn/a51)
18:24:17 × waldo quits (~waldo@user/waldo) (Ping timeout: 268 seconds)
18:24:56 dhruvasagar joins (~dhruvasag@49.207.206.234)
18:37:17 <dfg> spitball idea: would it be possible that an sql query could also be haskell code? or what might be the closest thing to it?
18:39:32 <dfg> it occured to me that 3select * from table and maybe some other simpler queries might not be too far from also being haskell-ish syntax? or am i just high
18:40:01 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 264 seconds)
18:41:10 dhruvasagar joins (~dhruvasag@49.207.206.234)
18:41:20 <EvanR> selectFrom star "table", might work
18:43:12 <EvanR> @where basic
18:43:13 <lambdabot> I know nothing about basic.
18:43:47 <EvanR> for something more along the lines of mimicking another language ... I can't find the original post but there's https://hackage.haskell.org/package/BASIC-0.1.5.0/docs/Language-BASIC.html
18:45:41 × mc47 quits (~mc47@xmonad/TheMC47) (Ping timeout: 260 seconds)
18:45:51 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 256 seconds)
18:46:40 dhruvasagar joins (~dhruvasag@49.207.206.234)
18:47:58 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:51:31 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 256 seconds)
19:00:33 nshepperd2 joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
19:03:20 dhruvasagar joins (~dhruvasag@49.207.206.234)
19:03:22 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 260 seconds)
19:03:25 × Guest57 quits (~Guest70@137.122.64.218) (Quit: Client closed)
19:08:05 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 256 seconds)
19:11:27 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
19:12:13 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
19:19:57 dhruvasagar joins (~dhruvasag@49.207.206.234)
19:23:10 × krei-se quits (~krei-se@p508747fd.dip0.t-ipconnect.de) (Quit: ZNC 1.8.2 - https://znc.in)
19:23:45 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
19:24:38 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 252 seconds)
19:24:41 krei-se joins (~krei-se@p508747fd.dip0.t-ipconnect.de)
19:25:09 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d90a:8962:8a2b:5610) (Remote host closed the connection)
19:30:57 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
19:31:01 dhruvasagar joins (~dhruvasag@49.207.206.234)
19:56:34 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 255 seconds)
19:58:26 mc47 joins (~mc47@xmonad/TheMC47)
19:59:00 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d90a:8962:8a2b:5610)
20:03:21 dhruvasagar joins (~dhruvasag@49.207.206.234)
20:04:10 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d90a:8962:8a2b:5610) (Ping timeout: 276 seconds)
20:06:35 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
20:10:01 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 276 seconds)
20:12:06 a51 joins (a51@gateway/vpn/protonvpn/a51)
20:19:45 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
20:23:09 × trev quits (~trev@user/trev) (Quit: trev)
20:26:57 dhruvasagar joins (~dhruvasag@49.207.206.234)
20:31:32 a51 joins (a51@gateway/vpn/protonvpn/a51)
20:31:57 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 256 seconds)
20:33:40 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
20:33:42 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:36:18 ft joins (~ft@p3e9bc222.dip0.t-ipconnect.de)
20:37:40 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
20:44:16 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
20:54:26 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d90a:8962:8a2b:5610)
20:56:28 × EvanR quits (~EvanR@user/evanr) (Quit: Leaving)
21:00:40 dhruvasagar joins (~dhruvasag@49.207.206.234)
21:04:09 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:05:07 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 246 seconds)
21:06:25 dhruvasagar joins (~dhruvasag@49.207.206.234)
21:07:44 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
21:08:53 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
21:10:58 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 256 seconds)
21:12:48 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
21:12:56 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
21:13:27 × nicos quits (~nsm@199.253.243.23) (Ping timeout: 260 seconds)
21:15:29 notzmv joins (~zmv@user/notzmv)
21:15:58 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
21:17:16 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
21:17:19 dhruvasagar joins (~dhruvasag@49.207.206.234)
21:17:49 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
21:20:19 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:22:01 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 260 seconds)
21:22:12 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:23:18 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
21:28:23 dhruvasagar joins (~dhruvasag@49.207.206.234)
21:28:25 Guest|15 joins (~Guest|15@075-185-104-199.res.spectrum.com)
21:28:43 × Guest|15 quits (~Guest|15@075-185-104-199.res.spectrum.com) (Client Quit)
21:28:55 danse-nr3 joins (~danse@151.47.87.83)
21:29:32 × danse-nr3 quits (~danse@151.47.87.83) (Remote host closed the connection)
21:31:51 danse-nr3 joins (~danse@151.47.87.83)
21:33:13 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 260 seconds)
21:33:27 × danse-nr3 quits (~danse@151.47.87.83) (Remote host closed the connection)
21:34:11 danse-nr3 joins (~danse@151.47.87.83)
21:34:41 × danse-nr3 quits (~danse@151.47.87.83) (Client Quit)
21:35:24 danse-nr3 joins (~danse@151.47.87.83)
21:36:01 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:36:57 × danse-nr3 quits (~danse@151.47.87.83) (Read error: Connection reset by peer)
21:37:28 danse-nr3 joins (~danse@151.47.87.83)
21:39:29 dhruvasagar joins (~dhruvasag@49.207.206.234)
21:42:16 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
21:44:29 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 256 seconds)
21:45:02 nicos joins (~nsm@186.141.133.40)
21:45:14 a51 joins (a51@gateway/vpn/protonvpn/a51)
21:53:02 × igemnace quits (~ian@user/igemnace) (Read error: Connection reset by peer)
21:56:19 dhruvasagar joins (~dhruvasag@49.207.206.234)
21:58:28 × average quits (uid473595@user/average) (Quit: Connection closed for inactivity)
22:01:21 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 268 seconds)
22:06:29 × danse-nr3 quits (~danse@151.47.87.83) (Ping timeout: 240 seconds)
22:07:24 dhruvasagar joins (~dhruvasag@49.207.206.234)
22:10:12 igemnace joins (~ian@user/igemnace)
22:11:58 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 246 seconds)
22:14:35 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
22:16:39 × nicos quits (~nsm@186.141.133.40) (Read error: Connection reset by peer)
22:17:17 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
22:19:18 dhruvasagar joins (~dhruvasag@49.207.206.234)
22:19:19 a51 joins (a51@gateway/vpn/protonvpn/a51)
22:23:15 nicos joins (~nsm@2800:2131:5400:883:28f6:1624:5755:79b0)
22:23:43 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 255 seconds)
22:30:12 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
22:33:45 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:33:55 Square joins (~Square@user/square)
22:39:05 × nicos quits (~nsm@2800:2131:5400:883:28f6:1624:5755:79b0) (Quit: Quit)
22:48:33 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
22:51:57 dhruvasagar joins (~dhruvasag@49.207.206.234)
22:56:55 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:56:59 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 264 seconds)
22:57:23 mima joins (~mmh@aftr-62-216-211-36.dynamic.mnet-online.de)
22:57:55 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
22:59:45 × fendor quits (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
23:01:41 × acidjnk_new quits (~acidjnk@p200300d6e737e728886c6af3a169d6ea.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
23:03:20 wenzel_ joins (~wenzel@dl5rzs8hfxtxc2s075t2y-3.rev.dnainternet.fi)
23:03:29 dhruvasagar joins (~dhruvasag@49.207.206.234)
23:06:05 × wlhn quits (~wenzel@82-181-36-183.bb.dnainternet.fi) (Ping timeout: 256 seconds)
23:06:57 <ski> dfg : "6.2.7. Generalised (SQL-like) List Comprehensions" <https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/generalised_list_comprehensions.html>
23:08:13 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 264 seconds)
23:09:00 dhruvasagar joins (~dhruvasag@49.207.206.234)
23:09:34 Sgeo joins (~Sgeo@user/sgeo)
23:12:12 × AlexNoo quits (~AlexNoo@178.34.160.228) (Read error: Connection reset by peer)
23:12:50 AlexNoo joins (~AlexNoo@178.34.160.228)
23:13:58 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 276 seconds)
23:16:11 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 260 seconds)
23:20:13 dhruvasagar joins (~dhruvasag@49.207.206.234)
23:21:44 EvanR joins (~EvanR@user/evanr)
23:24:47 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 256 seconds)
23:25:41 dhruvasagar joins (~dhruvasag@49.207.206.234)
23:30:39 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 260 seconds)
23:36:52 dhruvasagar joins (~dhruvasag@49.207.206.234)
23:37:58 × sudden quits (~cat@user/sudden) (Ping timeout: 255 seconds)
23:41:29 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 252 seconds)
23:43:02 dhruvasagar joins (~dhruvasag@49.207.206.234)
23:43:56 lottaquestions joins (~nick@2607:fa49:503d:b200:5126:8366:8f76:8d51)
23:44:39 sudden joins (~cat@user/sudden)
23:47:57 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
23:48:33 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 260 seconds)
23:50:01 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
23:50:21 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
23:50:45 dhruvasagar joins (~dhruvasag@49.207.206.234)
23:52:41 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
23:55:17 × dhruvasagar quits (~dhruvasag@49.207.206.234) (Ping timeout: 240 seconds)
23:56:07 dhruvasagar joins (~dhruvasag@49.207.206.234)
23:58:09 a51 joins (a51@gateway/vpn/protonvpn/a51)
23:59:59 alexherbo2 joins (~alexherbo@2a02-8440-3240-2b9a-3ce7-d076-3206-b029.rev.sfr.net)

All times are in UTC on 2024-01-29.