Role in IT decision-making process:Align Business & IT GoalsCreate IT StrategyDetermine IT NeedsManage Vendor RelationshipsEvaluate/Specify Brands or VendorsOther RoleAuthorize PurchasesNot Involved

Work Phone:

Company:

Company Size:

Industry:

Street Address

City:

Zip/postal code

State/Province:

Country:

Occasionally, we send subscribers special offers from select partners. Would you like to receive these special partner offers via e-mail?YesNo

Your registration with Eweek will include the following free email newsletter(s):News & Views

By submitting your wireless number, you agree that eWEEK, its related properties, and vendor partners providing content you view may contact you using contact center technology. Your consent is not required to view content or use site features.

By clicking on the "Register" button below, I agree that I have carefully read the Terms of Service and the Privacy Policy and I agree to be legally bound by all such terms.

Program Size

Program Size

Andy Adams-Moran said there are 20,000 to 200,000 lines of code included in Haskell projects out in the wild. This tends to be much smaller than many major programs written in other languages.

2 of 15

Proven Technology

Adams-Moran said the oldest Haskell projects are approaching 10 years in use.

3 of 15

Team Development

Haskell projects are typically created by teams of one to six programmers at a time.

4 of 15

Support for Modern, Agile Development Styles

Haskell is good for peer programming, whiteboards and code reviews.

5 of 15

Tools

While there is no vibrant, commercial market for Haskell tools, Adams-Moran said there are several available tools and libraries—in-house and community-driven—that support Haskell development at scale.

6 of 15

Keeps Clients Happy

Using Haskell can keep clients happy by allowing developer teams to easily keep to deadlines, while providing clarity, performance and maintainability of systems.

7 of 15

Domain-Specific Languages

Haskell is good for creating domain-specific languages (DSLs). It is also good in situations where high assurance deployments require formal evidence. And DSLs enable organizations to empower their experts with a language they know from the core.

8 of 15

Homomorphic Encryption

Homomorphic encryption is a form of encryption where a specific algebraic operation performed on the plaintext is equivalent to another (possibly different) algebraic operation performed on the ciphertext. Adams-Moran said Haskell is good for implementing homomorphic encryption, particularly in protecting data in the cloud—where users want to store only encrypted data in the cloud. Searches and queries work over encrypted data, yielding encrypted results that only the owner can access.

9 of 15

Community

Haskell has a vibrant, open community that attracts great programmers and researchers, said Adams-Moran. There also is a growing community of industrial practitioners of Haskell.

10 of 15

Reuse

Haskell facilitates and simplifies refactoring and reuse.

11 of 15

Abstraction Is Key

Abstraction is the key to Haskell. Abstraction is the process by which data and programs are defined with a representation similar in form to its meaning (semantics), while hiding away the implementation details. Abstraction tries to reduce and factor out details so that the programmer can focus on a few concepts at a time. In Haskell, abstraction is central to the programmer, particularly in discerning and describing patterns. It's a key creative skill for programmers and it helps manage complexity and enables reuse and understanding.

12 of 15

Debugging

Haskell is good for going straight to debugging your design.

13 of 15

Modeling

Haskell also is good for exploring design spaces and modeling behavior.

14 of 15

Network Security

Haskell can be applied to network security in regard to applications, tools, architectures, frameworks and the mobile space, said Adams-Moran.

15 of 15

Software Quality

Haskell is important in situations where software quality is key, particularly for tools for analyzing and evaluating software. This is especially true for security properties.