2 ms·
It's much more than just at the start end return of every function. But OTOH, it's much less than assertions, since they're restricted to a subset that can be p
by Peaker 12y ago
It's much more than just at the start end return of every function. But OTOH, it's much less than assertions, since they're restricted to a subset that can be proven (usually automatically).
Note the Scala verbosity here is Scala-specific. In HM-style languages, type inference works much better and you don't have to do such things. You might still have to explicitly "lift" a value from one type to another (e.g: Wrap a value in "Just", or use "lift"), but that's a much more minor price to pay.
- lmm 12y agoLifting in Scala is not at all verbose; I'm talking about casting, calling a method that the type system doesn't know is present.
- ches 12y ago> I do think that some strongly typed languages make it too difficult to step outside the type system; in Scala I have to do something like (x.asInstanceOf[{def foo(): String}]).foo() whereas in Python I can just write x.foo() Have to make an explicit cast with a structural type? Surely you can do better, like, say, a trait. > I'm talking about casting, calling a method that the type system doesn't know is present. I think a larger example is necessary to see how you ended up in such a situation, but I suppose it's off-topic...
- lmm 12y ago> Have to make an explicit cast with a structural type? Surely you can do better, like, say, a trait. Usually, yes. But the only way that's as general as the Python line is to use the structural type.