I don't see how this is different from any other dynamically- and strongly- typed programming language with some kind of "contract" framework, like Clojure or Python.
Values are at the center of your computations. Only a handful of predefined types of values exist:
3 # int
"Candy" # text
Green # symbol (uppercase)
(Foo, Bar) # list
[Name: "Candy"] # struct
{ it -> add it 2 } # function
Not having a Hash/Dict type is very oldschool lisp-y. # A struct with two tags as keys mapping to functions
httpServerStruct = [GetNextRequest: { … }, Close: { … }]
# A map with text keys
capitalCitiesMap = ["Germany": "Berlin", "France": "Paris"]But both Deal (https://pypi.org/project/deal/) and icontract (https://pypi.org/project/icontract/) have merit.
I can't remember where I saw it, but the author of deal seemed a bit annoyed at the existence of icontract, maybe on a mailing list.
I've played around with CrossHair (https://pypi.org/project/crosshair-tool/) as well a bit, and that supports both deal and icontract.
icontract also seems to integrate with hypothesis (https://pypi.org/project/hypothesis/) , which deal does not do explicitly.
> I've been dissatisfied with all of them actually!
What are some of your dissatisfaction points? Do you know of better alternatives in other languages ?