Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

Notorious b.s.d. posted:

pl/i is already cross platform

pl/x was an enhanced pl/s

i have no idea what pl/s was really meant for, or how it differs from pl/i

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
1984), but I believe the evolution was:

BSL - Basic Systems Language
PL/S - Programming Language/Systems (went through at least 3 versions)
PL/AS - Programming Language/Advanced Systems (went through at least 4
versions)
PL/X - Programming Language/Cross Systems (hyphenated with 370 or 390,
currently on version 2 of '-390')

I don't claim to know if it has it's roots in the PL/I compiler, but at
this point (over 20 years later), I don't think there'd any commonality
left.

You can't take a PL/S or PL/AS program and expect that final executable
will be anything like the output from the PL/X compiler, even if it
compiles cleanly.

Scott Fagen
z/OS Core Technology Design
IBM Poughkeepsie

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

Adbot
ADBOT LOVES YOU

Rhusitaurion
Sep 16, 2003

One never knows, do one?
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.

eschaton
Mar 7, 2007

Don't you just hate when you wind up in a store with people who are in a socioeconomic class that is pretty obviously about two levels lower than your own?
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

eschaton
Mar 7, 2007

Don't you just hate when you wind up in a store with people who are in a socioeconomic class that is pretty obviously about two levels lower than your own?
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

Notorious b.s.d.
Jan 25, 2003

by Reene

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

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

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

TimWinter
Mar 30, 2015

https://timsthebomb.com
Why the gently caress would they need a 3.10

Do they need to rewrite coroutine syntax another couple of times or something?

Gazpacho
Jun 18, 2004

by Fluffdaddy
Slippery Tilde

Notorious b.s.d. posted:

pl/i is already cross platform
it better cross and keep going :argh:

Workaday Wizard
Oct 23, 2009

by Pragmatica

Gazpacho posted:

it better cross and keep going :argh:

Notorious b.s.d.
Jan 25, 2003

by Reene

TimWinter posted:

Why the gently caress would they need a 3.10

Do they need to rewrite coroutine syntax another couple of times or something?

they are faithful in versioning and when bugs are fixed in a way that could alter api behavior, they update the minor veersion?

Athas
Aug 6, 2007

fuck that joker

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.

Xarn
Jun 26, 2015
I thought Haskell was good

Luigi Thirty
Apr 30, 2006

Emergency confection port.

for me to poop on

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.

Xarn posted:

I thought Haskell was good

lol no

my homie dhall
Dec 9, 2010

honey, oh please, it's just a machine

Xarn posted:

I thought Haskell was good

Luigi Thirty posted:

for me to poop on

Sagacity
May 2, 2003
Hopefully my epitaph will be funnier than my custom title.

Luigi Thirty posted:

for me to poop on
now that's some side-effect-causing io!

qhat
Jul 6, 2015


Xarn posted:

I thought Haskell was good

Lolling

AWWNAW
Dec 30, 2008

do you like types?

you should try freebasing them

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



Sagacity posted:

now that's some side-effect-causing io!

:mmmhmm:

Arcsech
Aug 5, 2008

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

champagne posting
Apr 5, 2006

YOU ARE A BRAIN
IN A BUNKER


Arcsech posted:

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

can you give an example?

HappyHippo
Nov 19, 2003
Do you have an Air Miles Card?
haskell is good

although Arcsech's assessment is accurate

Arcsech
Aug 5, 2008

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

although Arcsech's assessment is accurate

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

brap
Aug 23, 2004

Grimey Drawer
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.."

raminasi
Jan 25, 2005

a last drink with no ice
f# has (effectively) do-notation

Arcsech
Aug 5, 2008

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

fart simpson
Jul 2, 2005

DEATH TO AMERICA
:xickos:

do notation probably doesn’t make sense without gonads

Malcolm XML
Aug 8, 2009

I always knew it would end like this.
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)

Jonny 290
May 5, 2005



[ASK] me about OS/2 Warp
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

Jonny 290
May 5, 2005



[ASK] me about OS/2 Warp
we will return to the table when somebody explains in < 1kB what a monad is. assume ascii 8 bit

Malcolm XML
Aug 8, 2009

I always knew it would end like this.
it's a monoid in the category of endofunctors

Sinestro
Oct 31, 2010

The perfect day needs the perfect set of wheels.
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)

Malcolm XML
Aug 8, 2009

I always knew it would end like this.
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

Malcolm XML
Aug 8, 2009

I always knew it would end like this.
squint at optional<T> and list<T> and they both work the same.

VikingofRock
Aug 24, 2008




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.

Malcolm XML
Aug 8, 2009

I always knew it would end like this.

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.

Malcolm XML
Aug 8, 2009

I always knew it would end like this.
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

Jonny 290
May 5, 2005



[ASK] me about OS/2 Warp
this is interesting now thx

VikingofRock
Aug 24, 2008




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.

redleader
Aug 18, 2005

Engage according to operational parameters
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

Adbot
ADBOT LOVES YOU

rjmccall
Sep 7, 2007

no worries friend
Fun Shoe
oh for fucks sake just shut the gently caress up about monads

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply