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<irregularsphere> 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<irregularsphere> 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.