Dex: A research language for array processing in the Haskell/ML family
github.com
github.com
[0]: https://futhark-lang.org/blog/2019-08-03-towards-size-types....
I’m optimistic that we’ll eventually be able to figure out how to build practical tools for deep learning (and scientific computing for broadly) based on these sorts of ideas. The biggest challenge may be trying to fit them into Python syntax!
Edit: I see the paper they wrote has a shout out to it as well.
[1] http://www.ccs.neu.edu/home/jrslepak/typed-j.pdf also https://github.com/jrslepak/Remora/tree/master/remora
https://www.youtube.com/watch?v=z8MVKianh54
which argues that APL already provides the development ergonomics that are typically acribed to type systems. I.e. why type check your tacit function when it's implementation is about the same length as its type annotation?
Anyway, as someone trained in Category Theory and a huge fan of type systems, I found Hsu's argument surprisingly pursuasive.
I would love to hear any counterpoint arguments and the motivations behind attempts at giving J a type system.
f x y = x + y
or define a table with z.i = x.i + y.i
looks really clean to me. It avoids the stinking loops, but it is more obvious than the implicit names used in APL/J/K.Function application binding more tightly than infix operators and then having $ for grouping is also an interesting solution.
The table syntax is def new though.
I really want a language like this to go mainstream.
vecs.i.(j,k) = images.i.j.k
This converts a 3D array to a 2D array, with the indices of the 2nd dimension being tuples. This syntax is really nice.If the array shapes are types though, then what happens when you have to read a matrix from file and you don't know the shape of the matrix?
Dex is a functional statically typed language inspired by the ML family. That means type errors will be caught before even compiling the code, which gives a guarantee that once it starts running there will be no case of failure because there is no implementation of a method for given types.
The similarity between the two languages seem to be mostly the high performance powerful native multidimensional array support.
I simply made a mistake that functional programming and type theory wasn't on googles radar, how is that an unreasonable assumption?
Google's culture doesn't seem to produce singular opinions even in the solution to very narrow problems (hence why they often out 2+ things out competing in the same or overlapping domains), much less broad questions like “what kinds of programming languages are useful”.
You can safely assume that any of the stuff we commonly talk about on Hacker News is known to many Googlers.
You will note that in the design of go, rob pike actually admits that many of the flaws in go were in response to things he didn’t know. Which makes your last statement categorically wrong. I would even argue most googlers aren’t too familiar with ml style languages or algebraic data types.
The people behind Go promote Go, and the people behind Dart promote Dart, and the people working on Tensorflow promote Tensorflow. That's what they're working on. This doesn't require consensus about languages, or even philosophies behind languages.
So, pointing to Go and saying it contradicts some other language's philosophy? There is no contradiction. They are different people. And even the same person could agree that each language has different strengths.
(Also, "known to many Googlers" doesn't imply "known to all Googlers", so pointing out someone who didn't know something isn't a counterexample.)
And I assumed that it did. This is not an unreasonable assumption given the fact that all of these languages / frameworks are not functional or use ADTs.
>So, pointing to Go and saying it contradicts some other language's philosophy? There is no contradiction. They are different people. And even the same person could agree that each language has different strengths.
Literally my main post was about how my assumption was incorrect. Either way, you can not pinpoint for sure that this culture does not exist unless you've worked for google and talked to those people. It probably does, and dex may just be an exception.
>(Also, "known to many Googlers" doesn't imply "known to all Googlers", so pointing out someone who didn't know something isn't a counterexample.)
Pointing to a leader who controls entire teams of people who is a language designer who doesn't know many things is supporting evidence. Leaders establish culture in a company, which can be described as a type of consensus within a diverse group of peoples.
>You use "antithesis" like there's a contradiction, but this dissolves because we are talking about different people.
I am talking about culture NOT people with differing opinions. Culture is a singular thing. Sort of like how google is a singular thing. An abstraction. I made an assumption about the culture and it surprised me when something contradicted that assumption. The problem in your universe is such assumptions should not ever be made. The assumption is reasonable because you haven't presented any information would prove such an assumption absurd to the point of no return.
Your arguments imply that abstractions don't exist, everything is made up of components and parts; and assumptions about abstract groupings of said components are all "unreasonable" because abstract grouping are made of components and components have the potential to be different. You imply that components can never be the same and thus an assumption to that fact is incorrect.
That is the essence of your argument and it is fundamentally wrong to the point of complete absurdity.
It's true, Hacker News can be harsh sometimes, and I'm sorry you got downvoted so much. I don't think your assumptions were absurd.
But maybe there are better assumptions to make? Can we talk about that instead?
I'm not saying abstractions don't exist, but I would suggest taking some of them less seriously. In particular, I take the idea that companies are singular much less seriously. It's a show they put on for the convenience of the outside world and it takes effort to maintain. Internal politics is often hidden away. It's a leaky abstraction and often breaks down. (Sometimes literally through people leaking.)
Also, some things they don't try to standardize. Diversity of opinion can be fine.
Research, in particular, works that way. It would be weird to try to squelch diversity of opinion in research, where the whole point is to explore new ideas. Giving researchers the ability to publish their ideas, even those the company ends up not supporting, is a good way to recruit researchers.
It was marked deprecated in 2015 when I stopped working at Google. Friends say that it's still alive and kicking in 2019.
They're both surprisingly similar to the Nix configuration language: https://nixos.org/nix/manual/#ch-expression-language
I remember it syntactically much less noisy than Nix's, though. Ergonomics is hard.