← All packages

strict0.5.1

Strict data types and String IO.

Open the imported Cabal file ↗

author
Roman Leshchinskiy <rl@cse.unsw.edu.au> Simon Meier <iridcode@gmail.com>
build-type
Simple
cabal-version
>=1.10
category
Data, System
copyright
(c) 2006-2008 by Roman Leshchinskiy (c) 2013-2014 by Simon Meier
extra-source-files
CHANGELOG.md
homepage
https://github.com/haskell-strict/strict
license
BSD3
license-file
LICENSE
maintainer
Don Stewart <dons@galois.com>, Bas van Dijk <v.dijk.bas@gmail.com>, Oleg Grenrus <oleg.grenrus@iki.fi>, Simon Meier <iridcode@gmail.com>, Ximin Luo <infinity0@pwned.gg>
name
strict
synopsis
Strict data types and String IO.
tested-with
GHC ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.8 || ==9.4.8 || ==9.6.6 || ==9.8.2 || ==9.10.1
version
0.5.1
x-revision
1
Show the complete metadata as JSON
{
  "schemaVersion": 1,
  "name": "strict",
  "version": "0.5.1",
  "cabalVersion": "1.10",
  "buildType": "Simple",
  "fields": {
    "author": [
      "Roman Leshchinskiy <rl@cse.unsw.edu.au>\nSimon Meier <iridcode@gmail.com>"
    ],
    "build-type": [
      "Simple"
    ],
    "cabal-version": [
      ">=1.10"
    ],
    "category": [
      "Data, System"
    ],
    "copyright": [
      "(c) 2006-2008 by Roman Leshchinskiy\n(c) 2013-2014 by Simon Meier"
    ],
    "description": [
      "This package provides strict versions of some standard Haskell data\ntypes (pairs, Maybe and Either). It also contains strict IO operations.\n.\nIt is common knowledge that lazy datastructures can lead to space-leaks.\nThis problem is particularly prominent, when using lazy datastructures to\nstore the state of a long-running application in memory. One common\nsolution to this problem is to use @seq@ and its variants in every piece of\ncode that updates your state. However a much easier solution is to use\nfully strict types to store such state values. By \\\"fully strict types\\\" we\nmean types for whose values it holds that, if they are in weak-head normal\nform, then they are also in normal form. Intuitively, this means that\nvalues of fully strict types cannot contain unevaluated thunks.\n.\nTo define a fully strict datatype, one typically uses the following recipe.\n.\n1. Make all fields of every constructor strict; i.e., add a bang to\nall fields.\n.\n2. Use only strict types for the fields of the constructors.\n.\nThe second requirement is problematic as it rules out the use of\nthe standard Haskell 'Maybe', 'Either', and pair types. This library\nsolves this problem by providing strict variants of these types and their\ncorresponding standard support functions and type-class instances.\n.\nNote that this library does currently not provide fully strict lists.\nThey can be added if they are really required. However, in many cases one\nprobably wants to use unboxed or strict boxed vectors from the 'vector'\nlibrary (<http://hackage.haskell.org/package/vector>) instead of strict\nlists.  Moreover, instead of @String@s one probably wants to use strict\n@Text@ values from the @text@ library\n(<http://hackage.haskell.org/package/text>).\n.\nThis library comes with batteries included; i.e., mirror functions and\ninstances of the lazy versions in @base@. It also includes instances for\ntype-classes from the @deepseq@, @binary@, and @hashable@ packages."
    ],
    "extra-source-files": [
      "CHANGELOG.md"
    ],
    "homepage": [
      "https://github.com/haskell-strict/strict"
    ],
    "license": [
      "BSD3"
    ],
    "license-file": [
      "LICENSE"
    ],
    "maintainer": [
      "Don Stewart <dons@galois.com>,\nBas van Dijk <v.dijk.bas@gmail.com>,\nOleg Grenrus <oleg.grenrus@iki.fi>,\nSimon Meier <iridcode@gmail.com>,\nXimin Luo <infinity0@pwned.gg>"
    ],
    "name": [
      "strict"
    ],
    "synopsis": [
      "Strict data types and String IO."
    ],
    "tested-with": [
      "GHC ==8.6.5\n|| ==8.8.4\n|| ==8.10.7\n|| ==9.0.2\n|| ==9.2.8\n|| ==9.4.8\n|| ==9.6.6\n|| ==9.8.2\n|| ==9.10.1"
    ],
    "version": [
      "0.5.1"
    ],
    "x-revision": [
      "1"
    ]
  },
  "components": [
    {
      "kind": "library",
      "name": "main",
      "tree": {
        "data": {
          "buildable": null,
          "exposedModules": [
            "Data.Strict",
            "Data.Strict.Classes",
            "Data.Strict.Either",
            "Data.Strict.Maybe",
            "Data.Strict.These",
            "Data.Strict.Tuple",
            "System.IO.Strict"
          ],
          "otherModules": [],
          "dependencies": [
            {
              "package": "assoc",
              "range": ">=1.1.1 && <1.2",
              "libraries": [
                "main"
              ]
            },
            {
              "package": "base",
              "range": ">=4.12.0.0 && <5",
              "libraries": [
                "main"
              ]
            },
            {
              "package": "binary",
              "range": ">=0.8.6.0 && <0.9",
              "libraries": [
                "main"
              ]
            },
            {
              "package": "bytestring",
              "range": ">=0.10.8.2 && <0.13",
              "libraries": [
                "main"
              ]
            },
            {
              "package": "deepseq",
              "range": ">=1.4.4.0 && <1.6",
              "libraries": [
                "main"
              ]
            },
            {
              "package": "ghc-prim",
              "range": "-any",
              "libraries": [
                "main"
              ]
            },
            {
              "package": "hashable",
              "range": ">=1.4.7.0 && <1.6",
              "libraries": [
                "main"
              ]
            },
            {
              "package": "text",
              "range": ">=1.2.3.1 && <1.3 || >=2.0 && <2.2",
              "libraries": [
                "main"
              ]
            },
            {
              "package": "these",
              "range": ">=1.2.1 && <1.3",
              "libraries": [
                "main"
              ]
            },
            {
              "package": "transformers",
              "range": ">=0.5.6.2 && <0.7",
              "libraries": [
                "main"
              ]
            }
          ],
          "fields": {}
        },
        "branches": []
      }
    }
  ],
  "setupDependencies": [],
  "flags": [],
  "sourceRepositories": [],
  "warnings": [],
  "sourceUrl": "https://hackage.haskell.org/package/strict-0.5.1/strict.cabal",
  "sha256": "58c373b7c7748cbb4a5a6c8c15073f99a1c10a9a9bb6894ac33f43a5cdb901f2",
  "importedAt": "2026-10-14T12:49:24.770Z",
  "dependencies": [
    {
      "package": "assoc",
      "range": ">=1.1.1 && <1.2",
      "libraries": [
        "main"
      ],
      "component": "library:main",
      "conditions": []
    },
    {
      "package": "base",
      "range": ">=4.12.0.0 && <5",
      "libraries": [
        "main"
      ],
      "component": "library:main",
      "conditions": []
    },
    {
      "package": "binary",
      "range": ">=0.8.6.0 && <0.9",
      "libraries": [
        "main"
      ],
      "component": "library:main",
      "conditions": []
    },
    {
      "package": "bytestring",
      "range": ">=0.10.8.2 && <0.13",
      "libraries": [
        "main"
      ],
      "component": "library:main",
      "conditions": []
    },
    {
      "package": "deepseq",
      "range": ">=1.4.4.0 && <1.6",
      "libraries": [
        "main"
      ],
      "component": "library:main",
      "conditions": []
    },
    {
      "package": "ghc-prim",
      "range": "-any",
      "libraries": [
        "main"
      ],
      "component": "library:main",
      "conditions": []
    },
    {
      "package": "hashable",
      "range": ">=1.4.7.0 && <1.6",
      "libraries": [
        "main"
      ],
      "component": "library:main",
      "conditions": []
    },
    {
      "package": "text",
      "range": ">=1.2.3.1 && <1.3 || >=2.0 && <2.2",
      "libraries": [
        "main"
      ],
      "component": "library:main",
      "conditions": []
    },
    {
      "package": "these",
      "range": ">=1.2.1 && <1.3",
      "libraries": [
        "main"
      ],
      "component": "library:main",
      "conditions": []
    },
    {
      "package": "transformers",
      "range": ">=0.5.6.2 && <0.7",
      "libraries": [
        "main"
      ],
      "component": "library:main",
      "conditions": []
    }
  ],
  "exposedModules": [
    "Data.Strict",
    "Data.Strict.Classes",
    "Data.Strict.Either",
    "Data.Strict.Maybe",
    "Data.Strict.These",
    "Data.Strict.Tuple",
    "System.IO.Strict"
  ],
  "documents": {
    "readme": {
      "status": "missing",
      "sha256": null,
      "error": null,
      "checkedAt": "2026-10-14T12:49:25.410Z"
    },
    "changelog": {
      "status": "available",
      "sha256": "8b05fe31cad738eca0beb8aaea5f727f3392865279ced40662c357b0f0cdf483",
      "error": null,
      "checkedAt": "2026-10-14T12:49:25.717Z"
    }
  },
  "documentation": null,
  "versions": [
    {
      "version": "0.5.1",
      "imported_at": "2026-10-14T12:49:24.770Z"
    }
  ]
}

Import a package

Enter a package name and an exact version from Hackage. The site contains imported versions only.