samdphillips
2021-5-4 17:43:51

Is there an existing term for a language that has static effect checking, but not static type checking?


samdphillips
2021-5-4 17:44:56

By “effect” I specifically mean errors like a runtime type failure.


samth
2021-5-4 17:47:16

@samdphillips I don’t think there’s such a term, but I also don’t think there’s such a language, and it would be very hard to create. For example, how you deal with the effects functions might have will be tricky without having a function type.


samdphillips
2021-5-4 17:49:56

Aha I have an example of such a language :slightly_smiling_face:. It’s a DSL for data processing and doesn’t (as far as I’ve seen) allow user created functions. https://vector.dev/docs/reference/vrl/


samdphillips
2021-5-4 17:50:27

I may have mis-characterized some aspects though in my simplified question.


samdphillips
2021-5-4 17:51:16

And if I actually fully read the doc first I guess they call it “fail safety”


samth
2021-5-4 17:55:52

That seems like it has a static type system though


samdphillips
2021-5-4 18:10:51

Parts of it seem static, but it seems to devolve to an Any type, like this is valid > x = {} > x.something = 42 > (x.nothing + x.something) ?? null null


samdphillips
2021-5-4 18:26:04

As I think on this a bit, I can see how it could be static typed. It’s just the types are broader than the ones I normally think of (outside of TR.)