I'd like to highlight difference in the way we secure code/calculation path in Haskell and C++
Since in Haskell we have no any creation/calculation we use type-level protection by injecting polymorphic object ("token") that should be passed (actually type is passed) to each function that requires access to our secure type (with phantom type "token")