which languages have a REPL and Type Annotation?
which languages have a REPL and Type Annotation?
Yes, F# is such a sleeper hit language. Basically Ocaml++ with a bunch of cool extra goodies. Open source, high performance runtime and tons of great libraries.
I’ve been using it at work and it’s excellent
If only it had the one thing of OCaml does that’s actually important: ML modules.
Okay, I’m being kinda glib. Ocaml has plenty of other stuff going for it, and F# is a great, productive language, but its biggest weakness is something it doesn’t have.
C# : Does it have a repl?
As a procedural language (though it’s becoming more and more functional-like with each release) C# isn’t exactly designed to work with a REPL, but I think Visual Studio (the IDE, not the text editor) comes with an immediate window that works as one, and a quick internet search finds many third party ones, like .NET fiddle for the web, or CSharpRepl for the command line.
I guess, Python technically counts, although the type annotations were one hell of an afterthought.
I do feel like the two features are somewhat at odds with each other.
A REPL is useful for quickly trying something out, which you’d typically use to put together a quick script. In a larger application, you generally want to define unit tests, which make your “quickly trying something out” reproducible and automateable.
Meanwhile, type annotations primarily start to shine in larger applications, where you cannot keep the whole context in your head and where refactorings become problematic, when nothing checks that the parts still work together.
In some sense, they also don’t work well together. Type annotations work best when the whole context is known. But in a REPL, you almost always have an incomplete context, because you’re still typing everything out.
So, it cannot type-check the first few lines you write and it becomes awkward to try to show type errors once the context is complete, because the code isn’t on-screen anymore.
The Java Shell tool (JShell) is an interactive tool for learning the Java programming language and prototyping Java code. It was introduced in JDK 9. JShell is a Read-Evaluate-Print Loop tool (REPL), which evaluates declarations, statements, and expressions as they are entered and immediately shows the results. The tool is run from the command line.