# Pythonic FP - Functional tools
PyPI project
[pythonic-fp.fptools](https://pypi.org/project/pythonic-fp.fptools/)
Functional programming tools which endeavor to be Pythonic.
- Subclassable Boolean datatype (*module* `pythonic_fp.fptools.bool`)
- Functions as first class objects (*module* `pythonic_fp.fptools.function`)
- Lazy (non-strict) function evaluation (*module* `pythonic_fp.fptools.lazy`)
- Singletons (*module* `pythonic_fp.fptools.singletons`)
- 3 singleton classes representing
- a missing value (actually missing, not potentially missing)
- a sentinel values
- a failed calculation
- State monad implementation (*module* `pythonic_fp.fptools.state`)
- pure FP handling of state (the state monad)
- Classic FP implementation
- the monad encapsulates a state transformation, not a "state"
This PyPI project is part of of the grscheller
[pythonic-fp namespace projects](https://github.com/grscheller/pythonic-fp/blob/main/README.md).
**Warning:** The maintainer intends to break out the first, forth and
fifth modules to their own repos sometime in the near future.
## Documentation
Documentation for package
[GitHub Pages](https://grscheller.github.io/pythonic-fp/fptools/API/development/build/html)
hosted on GitHub pages.
## Copyright and License
Copyright (c) 2023-2025 Geoffrey R. Scheller. Licensed under the Apache
License, Version 2.0. See the LICENSE file for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "pythonic-fp.fptools",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "either, fp, functional, functional programming, lazy, maybe, monad, non-strict",
"author": null,
"author_email": "\"Geoffrey R. Scheller\" <geoffrey@scheller.com>",
"download_url": "https://files.pythonhosted.org/packages/7d/65/5f5db48bd0467eab18773813eea292d398792aa165d73c5fceef75e65ab2/pythonic_fp_fptools-4.0.0.tar.gz",
"platform": null,
"description": "# Pythonic FP - Functional tools\n\n\nPyPI project\n[pythonic-fp.fptools](https://pypi.org/project/pythonic-fp.fptools/)\nFunctional programming tools which endeavor to be Pythonic.\n\n- Subclassable Boolean datatype (*module* `pythonic_fp.fptools.bool`)\n- Functions as first class objects (*module* `pythonic_fp.fptools.function`)\n- Lazy (non-strict) function evaluation (*module* `pythonic_fp.fptools.lazy`)\n- Singletons (*module* `pythonic_fp.fptools.singletons`)\n - 3 singleton classes representing\n - a missing value (actually missing, not potentially missing)\n - a sentinel values\n - a failed calculation\n- State monad implementation (*module* `pythonic_fp.fptools.state`)\n - pure FP handling of state (the state monad)\n - Classic FP implementation\n - the monad encapsulates a state transformation, not a \"state\"\n\nThis PyPI project is part of of the grscheller\n[pythonic-fp namespace projects](https://github.com/grscheller/pythonic-fp/blob/main/README.md).\n\n**Warning:** The maintainer intends to break out the first, forth and\nfifth modules to their own repos sometime in the near future.\n\n## Documentation\n\nDocumentation for package\n[GitHub Pages](https://grscheller.github.io/pythonic-fp/fptools/API/development/build/html)\nhosted on GitHub pages.\n\n## Copyright and License\n\nCopyright (c) 2023-2025 Geoffrey R. Scheller. Licensed under the Apache\nLicense, Version 2.0. See the LICENSE file for details.\n",
"bugtrack_url": null,
"license": null,
"summary": "Pythonic FP - Functional Programming Tools",
"version": "4.0.0",
"project_urls": {
"Changelog": "https://github.com/grscheller/pythonic-fp-fptools/blob/main/CHANGELOG.rst",
"Documentation": "https://grscheller.github.io/pythonic-fp/fptools/API/v4.0.0/build/html/",
"Homepage": "https://github.com/grscheller/pythonic-fp/blob/main/README.md",
"Source": "https://github.com/grscheller/pythonic-fp-fptools"
},
"split_keywords": [
"either",
" fp",
" functional",
" functional programming",
" lazy",
" maybe",
" monad",
" non-strict"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2bc77bd0fd22638e29a3dc0d2aff1df05ab4008b452ca262ed575893cc2a984d",
"md5": "b0dd12a26455488bc9457d8a04c484df",
"sha256": "92a0f4d84ae4842141155f1f648fe81d721b67a9c793b9cd420292b67e7b7ef1"
},
"downloads": -1,
"filename": "pythonic_fp_fptools-4.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b0dd12a26455488bc9457d8a04c484df",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 16457,
"upload_time": "2025-07-13T22:16:36",
"upload_time_iso_8601": "2025-07-13T22:16:36.306175Z",
"url": "https://files.pythonhosted.org/packages/2b/c7/7bd0fd22638e29a3dc0d2aff1df05ab4008b452ca262ed575893cc2a984d/pythonic_fp_fptools-4.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7d655f5db48bd0467eab18773813eea292d398792aa165d73c5fceef75e65ab2",
"md5": "f4f23d7742f0d753f5ff64366b5d4253",
"sha256": "5230af3e2bd7582c8a1496d3660e1f7b7c33125b85747ce89b945fff1528102f"
},
"downloads": -1,
"filename": "pythonic_fp_fptools-4.0.0.tar.gz",
"has_sig": false,
"md5_digest": "f4f23d7742f0d753f5ff64366b5d4253",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 14826,
"upload_time": "2025-07-13T22:16:37",
"upload_time_iso_8601": "2025-07-13T22:16:37.799070Z",
"url": "https://files.pythonhosted.org/packages/7d/65/5f5db48bd0467eab18773813eea292d398792aa165d73c5fceef75e65ab2/pythonic_fp_fptools-4.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-13 22:16:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "grscheller",
"github_project": "pythonic-fp-fptools",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "pythonic-fp.fptools"
}