user287424
user287424

Reputation: 1249

Haskell without types

Is it possible to disable or work around the type system in Haskell? There are situations where it is convenient to have everything untyped as in Forth and BCPL or monotyped as in Mathematica. I'm thinking along the lines of declaring everything as the same type or of disabling type checking altogether.

Edit: In conformance with SO principles, this is a narrow technical question, not a request for discussion of the relative merits of different programming approaches. To rephrase the question, "Can Haskell be used in a way such that avoidance of type conflicts is entirely the responsibility of the programmer?"

Upvotes: 12

Views: 1356

Answers (4)

Erik Kaplun
Erik Kaplun

Reputation: 38227

Perhaps fdefer-type-errors combined with https://hackage.haskell.org/package/base-4.14.1.0/docs/Unsafe-Coerce.html offers what you need.

Upvotes: 0

Tikhon Jelvis
Tikhon Jelvis

Reputation: 68152

Also look at Data.Dynamic which allows you to have dynamically typed values in parts of your code without disabling type-checking throughout.

Upvotes: 10

rotskoff
rotskoff

Reputation: 704

Even with fdefer-type-errors one wouldn't be avoiding the type system. Nor does it really allow type independence. The point of the flag is to allow code with type errors to compile, so long as the errors are not called by the Main function. In particular, any code with a type error, when actually called by a Haskell interpreter, will still fail.

While the prospect of untyped functions in Haskell might be tempting, it's worth noting that the type system is really at the heart of the language. The code proves its own functionality in compilation, and the rigidity of the type system prevents a large number of errors.

Perhaps if you gave a specific example of the problem you're having, the community could address it. Interconverting between number types is something that I've asked about before, and there are a number of good tricks.

Upvotes: 8

Pubby
Pubby

Reputation: 53067

GHC 7.6 (not released yet) has a similar feature, -fdefer-type-errors:

http://hackage.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime

It will defer all type errors until runtime. It's not really untyped but it allows almost as much freedom.

Upvotes: 8

Related Questions