|
Notorious b.s.d. posted:pl/i is already cross platform the x still stands for cross system dude e: quote:Some of this predates my IBM tenure (my PL/S books are print dated from https://groups.google.com/forum/#!topic/bit.listserv.ibm-main/NtsoKQxODrI carry on then fucked around with this message at 17:12 on May 26, 2018 |
# ? May 26, 2018 17:09 |
|
|
# ? Jun 5, 2024 02:17 |
|
I used to write PL/X for my day job, in VM-CMS using XEDIT. We had a home-grown version control system that used BASIC-style line numbering on characters 73-80 of each line. If a file got edited too much, the line numbers would get too close together and you'd have to "rebase" the file. We'd compile by submitting batch jobs and getting the results back in a virtual punch card reader. My memories of the language itself are dim at this point, but I do remember that struct or record members didn't have their own namespace, so you couldn't have 2 different record types with a member called "next" or whatever - it was really annoying. That was my first job out of college, 2008. I stayed <2 years, but that was probably still too long.
|
# ? May 27, 2018 04:26 |
|
the “no namespace for struct/union members” thing was also an issue with early C, it’s where some of the UNIX use of prefixes like those in struct stat came from
|
# ? May 27, 2018 04:43 |
|
fun fact: PL/M was heavily promoted by Intel as a primary systems and application language for 8080, 8085, and even 8086/8088 their own development systems (the ones with big 8in drives you hooked a terminal to) were all written with it, and so were a number of systems based on Intel’s early 8-bit CPUs like GRiD
|
# ? May 27, 2018 04:51 |
|
eschaton posted:fun fact: PL/M was heavily promoted by Intel as a primary systems and application language for 8080, 8085, and even 8086/8088 8 inch floppies were the standard at the time. 5.25 inch was developed as a cost-reduced alternative, with a horrifying performance penalty. the weird things about intel's dev systems were 1.) they habitually avoided having an operating system and 2.) multibus lol edit: i think they had a pl/m for i432, too -- ada was meant to be the primary but god forbid they not run pl/m
|
# ? May 27, 2018 05:09 |
|
Why the gently caress would they need a 3.10 Do they need to rewrite coroutine syntax another couple of times or something?
|
# ? May 27, 2018 05:12 |
|
Notorious b.s.d. posted:pl/i is already cross platform
|
# ? May 27, 2018 06:23 |
|
Gazpacho posted:it better cross and keep going
|
# ? May 27, 2018 06:51 |
|
TimWinter posted:Why the gently caress would they need a 3.10 they are faithful in versioning and when bugs are fixed in a way that could alter api behavior, they update the minor veersion?
|
# ? May 27, 2018 07:36 |
|
eschaton posted:the “no namespace for struct/union members” thing was also an issue with early C, it’s where some of the UNIX use of prefixes like those in struct stat came from Haskell is still this way.
|
# ? May 27, 2018 07:57 |
|
I thought Haskell was good
|
# ? May 27, 2018 09:08 |
|
for me to poop on
|
# ? May 27, 2018 09:58 |
|
Xarn posted:I thought Haskell was good lol no
|
# ? May 27, 2018 11:52 |
|
Xarn posted:I thought Haskell was good Luigi Thirty posted:for me to poop on
|
# ? May 27, 2018 12:00 |
|
Luigi Thirty posted:for me to poop on
|
# ? May 27, 2018 13:11 |
|
Xarn posted:I thought Haskell was good Lolling
|
# ? May 27, 2018 15:49 |
|
do you like types? you should try freebasing them
|
# ? May 27, 2018 16:00 |
|
Sagacity posted:now that's some side-effect-causing io!
|
# ? May 27, 2018 16:20 |
|
Xarn posted:I thought Haskell was good haskell is a sandbox for ideas in programming languages some of the ideas are very good. these ones make it, slowly, into other languages some of the ideas are unbelievably awful. these ones stick around in haskell, used by grognards to make the code more confusing forever
|
# ? May 27, 2018 19:35 |
|
Arcsech posted:haskell is a sandbox for ideas in programming languages can you give an example?
|
# ? May 27, 2018 21:32 |
|
haskell is good although Arcsech's assessment is accurate
|
# ? May 27, 2018 21:39 |
|
Boiled Water posted:can you give an example? example of good things from haskell brought to other languages: Maybe and Result types with monadic(ish) handling and syntactic sugar which made their way into rust and c#, the newtype pattern with syntax support which made it into rust and kotlin. example of dumbass poo poo that (mostly*) stayed in haskell: the ability to make a "%%@~" operator, do-notation, strings defaulting to a linked-list implementation, using language from mathematics to describe things in programming languages * scala doesnt count edit: HappyHippo posted:haskell is good i like haskell well enough but it's a huge pain to work in sometimes and it's got a lot of cruft hanging around. like, it can be a good language as long as the people you work with have an ounce of self control edit2: the jury is still out on which side laziness-by-default falls into, but probably the second one Arcsech fucked around with this message at 21:58 on May 27, 2018 |
# ? May 27, 2018 21:53 |
|
the impulse to make everything conform to Monad and Applicative and to define key operations on your type where the extent of documentation/discoverability is "well, I guess you'd probably use >>= or <*> or something to do that, just looking at the parameter types.."
|
# ? May 28, 2018 00:05 |
|
f# has (effectively) do-notation
|
# ? May 28, 2018 03:40 |
|
raminasi posted:f# has (effectively) do-notation yeah kind of, but f# is also kind of a language sandbox i dunno, do-notation might not be an inherently awful idea, but if I was writing a haskell tutorial i would avoid it like the plague until very late because it kinda looks like imperative programming but really, really isn't
|
# ? May 28, 2018 04:12 |
|
do notation probably doesn’t make sense without gonads
|
# ? May 28, 2018 04:42 |
|
do notation and monads and monad transformers are extremely cool and good and the first time you have gently caress with a list of async tasks or a multiple chained optionals then you either wish for do notation and transformers or your lovely language has to special case it (c# rust python)
|
# ? May 28, 2018 04:52 |
|
This is the point in code discussion when the rest of us just amble back for another round because yall are on your bullshit again
|
# ? May 28, 2018 04:53 |
|
we will return to the table when somebody explains in < 1kB what a monad is. assume ascii 8 bit
|
# ? May 28, 2018 04:54 |
|
it's a monoid in the category of endofunctors
|
# ? May 28, 2018 05:03 |
|
a monad is a generic type M where one can write two functions, M<A> unit(A x) and M<B> bind(function<M<B>(A)> f, M<A> x) that follow a few simple rules: - bind(unit(a), f) = f(a) - bind(m, unit) = m - bind(m, [](A x) { bind(f(x), g)}) = bind(bind(m, f), g)
|
# ? May 28, 2018 05:06 |
|
or, more usefully, a nomad is a generic type Monad<T> such that you can take a function from T to V and lift it into a function from Monad<T> to Monad<V> (endofunctor) for any type T you can take a value of T and make a Monad<T> (first Monad property, related to monoid zero/unit) and the actual useful bit is that you can collapse a Monad<Monad<T>> into Monad<T> (monoid multiplication) also there are some coherency laws but those are less important
|
# ? May 28, 2018 05:09 |
|
squint at optional<T> and list<T> and they both work the same.
|
# ? May 28, 2018 05:09 |
The real hard part to explain is not "what is a monad" but "what is it useful for". The answer is that it is a good way of keeping track of a value's context in a language that abstracts away state. And the best way to learn how that works is to play around with them a bit. This is left as an exercise for the reader.
|
|
# ? May 28, 2018 05:14 |
|
VikingofRock posted:The real hard part to explain is not "what is a monad" but "what is it useful for". The answer is that it is a good way of keeping track of a value's context in a language that abstracts away state. And the best way to learn how that works is to play around with them a bit. This is left as an exercise for the reader. no a Monad is simply a type that implements that interface. theres no real notion of context.
|
# ? May 28, 2018 05:21 |
|
conveniently types like optional and state and error and reader and writer and list and async and various other types all implement Monad so you can wrote em in do notation
|
# ? May 28, 2018 05:22 |
|
this is interesting now thx
|
# ? May 28, 2018 05:35 |
Malcolm XML posted:no a Monad is simply a type that implements that interface. theres no real notion of context. Oh yeah, no argument here. What I was trying to say is not what they are, but why they are useful. And one answer is that they are a meat way of modeling context, like the presence of lack of a value, the possibility of many values, or the state of a random number generator or parser. Of course, they are useful for more than that, but that is a big one.
|
|
# ? May 28, 2018 05:41 |
|
as i understand it, all the interesting/useful monads have been written already, so they're an intellectual curiosity at best and nerd wankery at worst
|
# ? May 28, 2018 06:18 |
|
|
# ? Jun 5, 2024 02:17 |
|
oh for fucks sake just shut the gently caress up about monads
|
# ? May 28, 2018 06:19 |