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
redleader
Aug 18, 2005

Engage according to operational parameters

mystes posted:

They're unfortunately probably not going to be able to build that in any time soon because it would break existing apis but basically just use f# if you want that

yeah, but if we're dreaming of a better world... :allears:

Adbot
ADBOT LOVES YOU

VikingofRock
Aug 24, 2008




I haven't followed Haskell development in a few years, probably since ~2017 or so. I remember that at the time there was a lot of discussion about replacing monad transformers with fancy free monad stuff, because free monads composed better, but it was still pretty experimental at the time. What ever happened with that?

Athas
Aug 6, 2007

fuck that joker

VikingofRock posted:

I haven't followed Haskell development in a few years, probably since ~2017 or so. I remember that at the time there was a lot of discussion about replacing monad transformers with fancy free monad stuff, because free monads composed better, but it was still pretty experimental at the time. What ever happened with that?

People do that, but they also do lots of other things. Monad transformers have always been in libraries, not part of the language itself, so there is no need or ability to replace anything across the entire ecosystem.

If anything has happened, it is my impression that people don't assemble very complicated monad stacks anymore, if they ever did. I use free monads myself sometimes, but never to mash together different kinds of effects. I also still use reader/state/except monad transformer stacks, but rarely more than that.

mystes
May 31, 2006

I think the new idea is algebraic effects. IIRC nobody has gotten them to perform well enough in haskell yet (there was some work that looked like it was going to require compiler modifications), but I think other languages like purescript and idris use them.

Actually ocaml is also getting an algebraic effect system as a byproduct of the multicore work so it might randomly turn into a pure functional language.

raminasi
Jan 25, 2005

a last drink with no ice

redleader posted:

shouldn't you do public Yos? Pos() {} for this?

you should, but if you don’t want to, all that’s standing in your way is a compiler warning, and if you’re writing a library, your consumers won’t know that you didn’t

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?

icantfindaname posted:

what is the thread's favorite programming language, given they are all fallen and damned? haskell or lisp or somesuch?

Lisp is in neither fallen nor damned, it is pure and good and should be embraced by all

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?

distortion park posted:

I'm sure there's a good reason for it but I don't get why there isn't a major nominal/structural language which has first class support for the other. Like a nominal language which lets you say with keyword an interface is fulfilled by any structural matches or something.

I think it works in Swift to just say extension Foo: SomeProtocol {} if type Foo already has the functions and properties in SomeProtocol

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_Franz posted:

Did threads in the form that we know them today exist before the 90s,

yes, they weren’t always called threads but they existed in the 1980s

most of the UNIX and related world got them from Mach, more via imitation than anything else, but other minicomputer operating systems had various forms of lightweight processes since the 1970s

FORTH may have been one of the progenitors, its original process/task abstraction was much more like what we’d call a thread than a UNIX or equivalent process

INMOS implemented lightweight processes and Erlang-like I/O channels in its Transputer CPUs in the 1980s and they loving rule; Occam is a bit of an odd duck of a language though: it has a Pascal-ish rather than C-ish or Lisp-ish syntax, and every code block has to be marked as SEQ or PAR to indicate sequential or (allowed) parallel execution

mystes
May 31, 2006

the INMOS look

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?

mystes posted:

the INMOS look

pro username right here

redleader
Aug 18, 2005

Engage according to operational parameters

raminasi posted:

you should, but if you don’t want to, all that’s standing in your way is a compiler warning, and if you’re writing a library, your consumers won’t know that you didn’t

surely the compiler would complain if your library has nullable reference types enabled and you return null from a method returning a non-nullable type? i'm not at a computer i can test this on right now

if you're using a library that doesn't use nullable reference types then sure, you won't get a warning, which sucks. i guess that, in theory, calling a library that's not nullable-aware from a nullable-enabled project could warn you that the result could be null - but that would lead to a shitload of false positives

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 “existing API, not yet marked up” problem is why Swift has concepts of both optional and implicitly-unwrapped optional

any type signatures imported from ObjC without nullability annotations are projected into Swift as implicitly-unwrapped optional, and thus one can avoid the tedium of explicit unwrapping at the cost of potential catastrophic failure if you got a null after all, like in an unmanaged language

the ideal use is to still write code with explicit unwrapping, so you never see such a failure, and then when the API you’re writing against gets annotated all the new code you wrote continues to work just fine, but some of it may have warnings it’s unneeded because some things can’t be null after all—so you can take that out and also still compile against the pre-annotation API if need be

tef
May 30, 2004

-> some l-system crap ->

eschaton posted:

Lisp is in neither fallen nor damned, it is pure and good and should be embraced by all

lisp did everything first, well, except adoption and success

abraham linksys
Sep 6, 2010

:darksouls:
i'd love to read a clojure "postmortem" some time, felt like it had a ton of momentum circa 2012 and it all petered out. seemed like the last great chance for lisp

wonder if it coincides with the turn back towards static typing amongst a lot of companies

Nomnom Cookie
Aug 30, 2009



abraham linksys posted:

i'd love to read a clojure "postmortem" some time, felt like it had a ton of momentum circa 2012 and it all petered out. seemed like the last great chance for lisp

wonder if it coincides with the turn back towards static typing amongst a lot of companies

a lot of companies got 10x’d but idk if that counts as momentum

Soricidus
Oct 21, 2010
freedom-hating statist shill

Nomnom Cookie posted:

a lot of companies got 10x’d but idk if that counts as momentum

I think you mean (* x 10)’d

tef
May 30, 2004

-> some l-system crap ->

abraham linksys posted:

i'd love to read a clojure "postmortem" some time, felt like it had a ton of momentum circa 2012 and it all petered out. seemed like the last great chance for lisp

wonder if it coincides with the turn back towards static typing amongst a lot of companies

let's see

1. the jvm was kinda super popular and isn't any more
2. twitter picked scala, and scala was the popular jvm choice
3. a bunch of big names in the community just got mad with the "i am rich hickey and i am an auteur" thing
4. rich hickey stopped doing the conference circuit to drum up interest

plus i guess

5. hell is other people's macros.

not to be "the technical is technical before it is social" but it really feels like clojure wasn't allowed to grow beyond rich hickey's sideshow project and there's only so much one man can do to sell it to users

prisoner of waffles
May 8, 2007

Ah! well a-day! what evil looks
Had I from old and young!
Instead of the cross, the fishmech
About my neck was hung.
A Brazilian bank bought Cognitect, the consultancy that cohered around Hockey and other core Clojure contributors.

Retrospective and postmortem are synonyms, right?
https://building.nubank.com.br/clojure-15th-anniversary-a-retrospective/

champagne posting
Apr 5, 2006

YOU ARE A BRAIN
IN A BUNKER


prisoner of waffles posted:

A Brazilian bank bought Cognitect, the consultancy that cohered around Hockey and other core Clojure contributors.

Retrospective and postmortem are synonyms, right?
https://building.nubank.com.br/clojure-15th-anniversary-a-retrospective/

How do we get more people to expand our bank with this niche programming language? I know, we'll buy out the people who created it in the first place!

Cybernetic Vermin
Apr 18, 2005

tbh i think the jvm not being as obvious a choice as it was at one point has at least as much to do with clojure losing some steam. oracle hasn't really ruined things yet, but i think many are feeling less sure about the future direction.

abraham linksys
Sep 6, 2010

:darksouls:
we're doin kotlin for our backend at work and consider the JVM to be a pretty nice thing all things considered. lotta out of the box monitoring tools, lots of library options

champagne posting
Apr 5, 2006

YOU ARE A BRAIN
IN A BUNKER


Cybernetic Vermin posted:

tbh i think the jvm not being as obvious a choice as it was at one point has at least as much to do with clojure losing some steam. oracle hasn't really ruined things yet, but i think many are feeling less sure about the future direction.

also doesn't help that python is as fast enough for by far most of the things and on the whole easier to use than clojure

Cybernetic Vermin
Apr 18, 2005

abraham linksys posted:

we're doin kotlin for our backend at work and consider the JVM to be a pretty nice thing all things considered. lotta out of the box monitoring tools, lots of library options

i'd still likely pick the jvm if i had to pick a platform to build on for almost any task, but in like 2008 i don't think i'd have even given alternatives serious consideration. whereas now .net is a real choice for example, easier to trust microsoft than oracle even if you're a linux shop. stuff like python and rust have gotten to a much more legit place too.

even weirdo things like erlang seemed kind of moribund around the beginning of the millennium, and has largely returned to strength since.

Cybernetic Vermin fucked around with this message at 18:43 on Dec 2, 2022

Athas
Aug 6, 2007

fuck that joker
I had a PL experience last week. I was external examiner at a university, for a project course where the students had to design and implement their own language from scratch. This is in many ways an ill conceived idea, as these are second year students who have seen only C#, Java, and maybe a bit of Javascript. Their language designs are not very imaginative, usually tiny subsets of C# or Java, and they compile to C# and Java too. That means things like scope rules and control flow can largely just be inherited from the target. They still find interesting ways to screw up, because really, they haven't been properly taught how to do this. (I won't even get into their attempts at defining formal operational semantics for their languages.)

There was one very interesting project, though. They wanted to implement some kind of CSV processing language, and they eventually decided on a dynamically typed and interpreted language. Then somehow they managed to also implement first class functions and proper lexical scope with mutation in their language. They implemented a fully operational Lisp (except for the syntax) by accident! You could use all the classic SICP tricks to build up arbitrary data structures from closures. These are students who have never been shown anything this flexible or powerful in their studies. They also had a JavaScript-ish object system, so you could build up a decent object-oriented programming system with conventional f.m(x) syntax by putting closures in object fields. When I showed them this kind of programming they got very confused and afraid, and started suggesting that perhaps their language should be restricted so that this kind of programming would not be allowed. Very strong Plato's Cave vibes.

Carthag Tuek
Oct 15, 2005

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



that was the right reaction imo

dougdrums
Feb 25, 2005
CLIENT REQUESTED ELECTRONIC FUNDING RECEIPT (FUNDS NOW)

Carthag Tuek posted:

that was the right reaction imo

Captain Foo
May 11, 2004

we vibin'
we slidin'
we breathin'
we dyin'

Carthag Tuek posted:

that was the right reaction imo

Quebec Bagnet
Apr 28, 2009

mess with the honk
you get the bonk
Lipstick Apathy

Carthag Tuek posted:

that was the right reaction imo

my homie dhall
Dec 9, 2010

honey, oh please, it's just a machine

Athas posted:

I had a PL experience last week. I was external examiner at a university, for a project course where the students had to design and implement their own language from scratch. This is in many ways an ill conceived idea, as these are second year students who have seen only C#, Java, and maybe a bit of Javascript. Their language designs are not very imaginative, usually tiny subsets of C# or Java, and they compile to C# and Java too. That means things like scope rules and control flow can largely just be inherited from the target. They still find interesting ways to screw up, because really, they haven't been properly taught how to do this. (I won't even get into their attempts at defining formal operational semantics for their languages.)

There was one very interesting project, though. They wanted to implement some kind of CSV processing language, and they eventually decided on a dynamically typed and interpreted language. Then somehow they managed to also implement first class functions and proper lexical scope with mutation in their language. They implemented a fully operational Lisp (except for the syntax) by accident! You could use all the classic SICP tricks to build up arbitrary data structures from closures. These are students who have never been shown anything this flexible or powerful in their studies. They also had a JavaScript-ish object system, so you could build up a decent object-oriented programming system with conventional f.m(x) syntax by putting closures in object fields. When I showed them this kind of programming they got very confused and afraid, and started suggesting that perhaps their language should be restricted so that this kind of programming would not be allowed. Very strong Plato's Cave vibes.

lmao

fart simpson
Jul 2, 2005

DEATH TO AMERICA
:xickos:

Athas posted:

I showed them this kind of programming
                  /

fart simpson
Jul 2, 2005

DEATH TO AMERICA
:xickos:

VikingofRock posted:

I haven't followed Haskell development in a few years, probably since ~2017 or so. I remember that at the time there was a lot of discussion about replacing monad transformers with fancy free monad stuff, because free monads composed better, but it was still pretty experimental at the time. What ever happened with that?

i think theres been more development on the effect system front. but i cant tell u much about it

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
i've been working for quite a while on a hypercard-like multimedia authoring tool called decker. it uses a novel scripting language, lil, which might be interesting (or at least bemusing) to some of the folks in this thread



in a nutshell, lil is a dynamic, functional language that aesthetically resembles Lua but semantically is similar in many ways to Q, the vector language. it has uniform precedence, vector conforming, and database tables as a first-class type with query syntax:



another feature i think is kinda neat is a pair of primitives for tokenizing and formatting strings, sort of like scanf()/printf() but designed to be symmetrical, so that often you can reuse the same pattern for round-tripping data:



in practice most lil scripts are closer to:



but if you ever need it, there's a reasonably nice, expressive programming language available that can handle crud and data munging

Kazinsal
Dec 13, 2011
I have an istp project that would use the hell out of that if it were written in C and were lua/kuroko grade embeddable, especially with the SQL-y tables as a first class object

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
lil is implemented in c, and there's also a parallel fork implemented in js, just like the rest of decker

nowhere close to as robust as lua though, and embedding it in other applications isn't as slick, but i'll keep chipping away at it over time

Internet Janitor fucked around with this message at 06:54 on Jul 5, 2023

Kazinsal
Dec 13, 2011

Internet Janitor posted:

lil is implemented in c, and there's also a parallel fork implemented in js, just like the rest of decker

nowhere close to as robust as lua though, and embedding it in other applications isn't as slick, but i'll keep chipping away at it over time

kickin rad. my istp could use some way to quickly manipulate databases in memory without needing some gigantic fat thing like sqlite, and having it attached to a scripting language would be absolutely phenomenal to make it easier to rewrite kernel tasks on the fly without needing to recompile the whole loving kernel and rebooting the machine and thus losing all the state of everything other than what's being fiddled with.

fart simpson
Jul 2, 2005

DEATH TO AMERICA
:xickos:

heres an idea. anyone can take it for free, no royalty or license fee:

lisp, but with < > instead of ( )

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.
it's called xslt

redleader
Aug 18, 2005

Engage according to operational parameters

pokeyman posted:

it's called xslt

and it's good, op

Athas
Aug 6, 2007

fuck that joker

fart simpson posted:

heres an idea. anyone can take it for free, no royalty or license fee:

lisp, but with < > instead of ( )

brillant design

code:
<defun max <x y> <if <( x y> y x>>

Adbot
ADBOT LOVES YOU

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope

fart simpson posted:

heres an idea. anyone can take it for free, no royalty or license fee:

lisp, but with < > instead of ( )

lisp, but with any of the brackets from this list https://en.wikipedia.org/wiki/Bracket#Unicode

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