Home freenode/#haskell: Logs Calendar

Logs: freenode/#haskell

←Prev  Next→
Page 1 .. 463 464 465 466 467 468 469 470 471 472 473 .. 5022
502,152 events total
2020-10-06 13:09:55 <kuribas> ski: clojure is trying to be the cool kid, but adopting part of the new developments (purity), and completly trashing the rest (static types).
2020-10-06 13:10:32 <dminuoso> frdg: In fact, completely unlimited sets lead to Russels Paradox!
2020-10-06 13:10:39 <kuribas> ski: it's also a rather inefficient and clumsy approach to leverage the JVM.
2020-10-06 13:11:30 <ski> frdg : the problem is that (due to the influence of Zermelo-Fraenkel set theory), math literature tends to not talk about the distinction between subsets (aka material sets), and sets/types (aka structural sets) .. even though, imho, it's a distinction that's implicitly present, very often
2020-10-06 13:11:48 <quazimod1> ski: CL is like a perfect vision of beauty has had that 'the fly' thing done to it
2020-10-06 13:12:11 <ski> quazimod1 : .. yea, i tend to lean more to the Scheme side
2020-10-06 13:12:20 <quazimod1> ever seen CLOS
2020-10-06 13:12:25 <quazimod1> you _never_ need CLOS
2020-10-06 13:12:29 <frdg> ski: ok this is nice to know
2020-10-06 13:12:33 <dminuoso> My opinion is, if I wanted to drive a startup, I wouldn't pick a language that I had to learn first, especially if that language was so exotic, that I couldn't reasonably start to become productive in 2 weeks.
2020-10-06 13:12:40 <quazimod1> it's okay, great to read about it just to see how else you could do OOP
2020-10-06 13:12:59 <quazimod1> instrumented multiple inheritance. Yes please, sign me up. I'll take some flagellation too
2020-10-06 13:13:22 <quazimod1> dminuoso: i'm not worried about that, i'm a consulting tech lead, that's all i do
2020-10-06 13:13:28 ski . o O ( "Interface-passing style" by Fare (François-René Rideau) in 2010-02-17 at <https://fare.livejournal.com/155094.html> )
2020-10-06 13:13:28 <kuribas> CL was made to bring order in the chaos of all the different lisps, but without rewriting the language. Scheme was made to rewrite the language, and make it small, elegant and consistent.
2020-10-06 13:13:34 <dminuoso> Consulting on a language youd ont even know.
2020-10-06 13:13:38 <dminuoso> Not sure whether that its better.
2020-10-06 13:13:40 <dminuoso> :)
2020-10-06 13:13:45 <quazimod1> dminuoso: getting paid a goddamn lot to do it too :P
2020-10-06 13:13:53 <quazimod1> hey man all my customers are happy i make shit happen
2020-10-06 13:13:57 <dminuoso> Maybe I should switch jobs
2020-10-06 13:14:09 <dminuoso> I could do COBOL consulting perhaps.
2020-10-06 13:14:17 <quazimod1> could probably make good money there too
2020-10-06 13:14:22 <quazimod1> i know that the banks are having a hard time
2020-10-06 13:14:23 <kuribas> quazimod1: cool, then you can start consulting on haskell?
2020-10-06 13:14:35 <quazimod1> kuribas: if I took it seriously, yeah
2020-10-06 13:14:40 <dminuoso> Didn't Facebook just kick off some artificial intelligence project aimed to rewrite cobol in traditional languages?
2020-10-06 13:14:42 <ski> that "Interface-passing style" is more or less using type classes (sans the uniqueness of instance), or rather, the explicit dictionary-passing implementation of it. (in a Lisp context)
2020-10-06 13:14:43 <quazimod1> i wouldn't shy away from it
2020-10-06 13:14:53 <dminuoso> frdg: Also, consider that `Set a` has an additional limitation in that it needs to satisfy a `Ord a` constraint (well not the type, but almost all its functions)
2020-10-06 13:15:14 <quazimod1> i know i'd be studying my ass off to learn & understand it, and I don't lie to my clients about my understanding of something
2020-10-06 13:16:21 <ski> kuribas : how does Clojure fare with STM ? i think i've heard they mentioned at the same time. and do you have any mutability (not counting if they're separated from the rest of the code like with `IORef' in Haskell. yes, that can be done, without static types) ?
2020-10-06 13:16:36 <dminuoso> frdg: So that alone mandates the set be uniform, so comparisons even work.
2020-10-06 13:16:41 <quazimod1> man 99% of my income is because, outside of IRC tomfoolery, I communicate pretty well and expect my staff to communicate pretty well too, you'd be surprised how well a venture can go with pretty meh commodity devs who are communicating with each other & the stake holders
2020-10-06 13:16:44 <dminuoso> Without this, we couldn't have a performant (and thus useful) implementation
2020-10-06 13:17:04 <kuribas> ski: I haven't done anything with concurrency in clojure...
2020-10-06 13:17:43 <frdg> dminuoso: So what we have in haskell is `uniform sets`?
2020-10-06 13:18:24 <dminuoso> or "homogenous" rather. yeah
2020-10-06 13:18:30 <kuribas> ski: and yes, clojure has mutability, as it can access java objects. But most clojure datatypes are immutable.
2020-10-06 13:18:35 <ski> frdg : it doesn't happen, for the same reason as in programming. you need to know how to use the data as well. for a list in Haskell, if you have no idea whether an element is an integer, or a string, or another list, you can't do much useful, except passing them on to someone who knows. and even if you can query (like with dynamic typing), this tends to be clumsy, not lead to well-structured developments
2020-10-06 13:19:07 <frdg> ok I understand
2020-10-06 13:19:09 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
2020-10-06 13:20:08 × toorevitimirp quits (~tooreviti@117.182.180.245) (Ping timeout: 256 seconds)
2020-10-06 13:20:51 <sm[m]> quazimod1: do you hire only good communicators, or do you channel client communications through a few senior people ?
2020-10-06 13:21:03 <ski> kuribas : ok. i take that the mutability isn't "warded off / contained", or explicitly marked, with some kind of effect stuff ("tainting" ?), then
2020-10-06 13:21:11 <kuribas> ski: nope
2020-10-06 13:21:25 <quazimod1> sm[m]: my rule of thumb is to hire good natured & helpful seniors
2020-10-06 13:22:01 <maerwald> quazimod1: many ppl hire for "IQ" in tech and then get confused why their team is an unmanagable mess :)
2020-10-06 13:22:04 <quazimod1> client comms are tricky sometimes, ofc, especially when you've got arrogant fuckheads on the other side, frequntly happens
2020-10-06 13:22:29 <quazimod1> maerwald: dont get me started on 'smart' people
2020-10-06 13:22:33 <quazimod1> fucking worthless
2020-10-06 13:22:36 <ski> frdg : of course, you can have more exotic things, like a list where the first element is a number, the next is a pair of numbers, the next is a pair of pair of numbers, &c. .. to express many such, you need dependent types (although sometimes one can encode them without)
2020-10-06 13:22:52 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-06 13:23:13 <sm[m]> yes please don't maerwald :)
2020-10-06 13:23:18 <maerwald> :p
2020-10-06 13:23:22 <dminuoso> ski: Well, we can still have such things with intermediate data types in Haskell.
2020-10-06 13:23:36 <quazimod1> too late i'm starting
2020-10-06 13:23:40 <ski> frdg : but generally, you do have some kind of "order" that allows you to know what kind of value you're dealing with, without having to query (at least if you do express some amount of "querying" in terms of "tags", that is sum types)
2020-10-06 13:23:52 <sm[m]> quazimod1: interesting but probably
2020-10-06 13:23:52 <quazimod1> i have a guy doing ML for us... when he gets "bored" he "starts new projects"
2020-10-06 13:24:00 <sm[m]> OT here
2020-10-06 13:24:15 <maerwald> yeah, we have OT channels for that
2020-10-06 13:24:26 <quazimod1> he's a vestigial remnant of a company that we work with. Soon to be snipped off
2020-10-06 13:24:34 <quazimod1> what's OT
2020-10-06 13:24:35 <ski> dminuoso : hm, elaborate on what you mean ?
2020-10-06 13:24:52 <maerwald> and make sure you don't disclose names :p
2020-10-06 13:24:57 <quazimod1> oh right, yeah n/p i'll let it go. Back to haskell. This white paper is hard to read :/
2020-10-06 13:25:00 <sm[m]> off topic , at least at this busy time.
2020-10-06 13:25:21 <sm[m]> especially if it's a rant :)
2020-10-06 13:25:29 <ski> quazimod1 : ML as in SML,OCaml or F# ? or Machine Language ? or Machine Learning ?
2020-10-06 13:25:37 <quazimod1> ski: machine learning
2020-10-06 13:25:40 <maerwald> sm[m]: we barely rant here, do we? :angelface:
2020-10-06 13:25:51 toorevitimirp joins (~tooreviti@117.182.180.245)
2020-10-06 13:26:01 <dminuoso> ski: Well the particular example you named could just be encoded by `data P = S Int | P P P deriving (Eq, Ord)`, and then you can have `Set P` just fine.
2020-10-06 13:26:14 <dminuoso> Oh wait
2020-10-06 13:26:17 <dminuoso> I see what you mean
2020-10-06 13:26:32 × GyroW quits (~GyroW@unaffiliated/gyrow) (Remote host closed the connection)
2020-10-06 13:26:44 <sm[m]> maerwald not too much really :)
2020-10-06 13:26:51 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-06 13:26:51 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-06 13:26:51 GyroW joins (~GyroW@unaffiliated/gyrow)
2020-10-06 13:27:09 × conal quits (~conal@64.71.133.70) (Ping timeout: 256 seconds)
2020-10-06 13:27:15 <ski> dminuoso : no, the example i had was more like `data DoublingList a = Nil | Cons a (DoublingList (a,a))' (a "non-regular data type", since it's not passing the same type parameters in the recursive call)
2020-10-06 13:27:20 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
2020-10-06 13:27:22 <dminuoso> Right
2020-10-06 13:27:37 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2020-10-06 13:28:38 <quazimod1> , where 7!
2020-10-06 13:28:47 <quazimod1> ignore
2020-10-06 13:29:19 <ski> then, you can throw a `Maybe', like `data BinNumeral a = Nil | Cons (Maybe a) (BinNumeral (a,a))' and now you have a collection of arbitrary (finite) number of elements of `a', represented as a "binary numeral" "sequence of `1's and `0's". each `1' being a perfectly-balanced binary tree of size `2^n', where `n' is the index of the bit
2020-10-06 13:29:22 <quazimod1> oh man so out of my depth, ->* is the reflexive transitive closure of ->
2020-10-06 13:29:25 <quazimod1> what the hell does that mean
2020-10-06 13:29:31 conal joins (~conal@66.115.157.135)
2020-10-06 13:29:41 <ski> quazimod1 : it means that `->*' is zero or more `->' steps
2020-10-06 13:29:50 × jonatanb quits (~jonatanb@79.184.190.239.ipv4.supernova.orange.pl) (Read error: Connection reset by peer)
2020-10-06 13:30:15 <quazimod1> lol
2020-10-06 13:30:17 <quazimod1> nice
2020-10-06 13:30:23 jonatanb joins (~jonatanb@79.184.190.239.ipv4.supernova.orange.pl)
2020-10-06 13:30:33 <ski> quazimod1 : so, for all `x', you have `x ->* x' (zero steps). and if you have `x -> y' and `y ->* z', then you have `x ->* z' (you can "add in" one more step)
2020-10-06 13:30:41 <sm[m]> quazimod1: tip: easy to get lost in CS when learning haskell, common mistake is thinking it's the only way to get productive - it's not
2020-10-06 13:31:03 <quazimod1> sm[m]: its the best way to not be productive, in fact you need none of this to ever be productive :P

All times are in UTC.