If you are not sure if the website you would like to visit is secure, you can verify it here. Enter the website address of the page and see parts of its content and the thumbnail images on this site. None (if any) dangerous scripts on the referenced page will be executed. Additionally, if the selected site contains subpages, you can verify it (review) in batches containing 5 pages.
favicon.ico: hackage.haskell.org/package/endo - endo: Endomorphism utilities..

site address: hackage.haskell.org/package/endo

site title: endo: Endomorphism utilities.

Our opinion (on Friday 17 July 2026 7:29:00 UTC):

GREEN status (no comments) - no comments

Meta tags:

Headings (most frequently used words):

endo, flags, usage, with, corner, endomorphism, utilities, modules, downloads, readme, for, description, examples, building, options, license, contributions, manual, basic, idea, working, cases, lenses, other, using, optparse, applicative, maintainer,

Text of the page (most frequently used words):
config (48), identityt (26), verbosity (22), parser (21), data (21), endo (21), annoying (16), options (14), package (14), the (13), this (12), monoid (12), and (11), for (11), outputfile (11), maybe (10), out (10), put (10), filepath (10), foldendo (9), example (8), that (8), file (7), set (7), flag (7), anendo (7), type (7), setoutputfile (7), setoutputfile3 (7), using (6), ghc (6), where (6), can (6), show (6), silent (6), one (6), instance (6), defaultconfig (6), main (6), _verbosity (6), _outputfile (6), appendo (6), use (6), setverbosity (6), endomorphism (6), git (6), github (5), flags (5), long (5), help (5), normal (5), from (5), following (5), verbose (5), above (5), applicative (5), but (5), with (5), description (5), com (5), cabal (4), are (4), license (4), details (4), default (4), outputoption (4), option (4), output (4), not (4), verbosityoption (4), annoyingflag (4), silentflag (4), verboseflag (4), foldendoargs (4), here (4), info (4), like (4), setoutputfile4 (4), setoutputfile2 (4), cfg (4), deriving (4), 2016 (4), trskop (4), hackage (3), short (3), left (3), right (3), map (3), verbositystrvalues (3), functions (3), there (3), all (3), instances (3), optparse (3), module (3), now (3), lens (3), either (3), has (3), corner (3), define (3), lets (3), examples (3), utilities (3), petertrsko (3), peter (3), contributions (2), bug (2), reports (2), author (2), bsd (2), clause (2), see (2), pass (2), additional (2), warning (2), disabled (2), optional (2), parsefilepath (2), metavar (2), eitherreader (2), null (2), empty (2), path (2), parseverbosity (2), level (2), verbositytostr (2), verbosityintvalues (2), fromenum (2), parseverbosityerror (2), only (2), case (2), just (2), nothing (2), used (2), code (2), parsers (2), individual (2), runidentityt (2), runendo (2), clutter (2), avoid (2), orphan (2), execparser (2), fulldesc (2), print (2), more (2), defines (2), definitions (2), endooperateson (2), example6 (2), other (2), usage (2), example5 (2), setting (2), values (2), look (2), may (2), lenses (2), between (2), uses (2), style (2), when (2), order (2), its (2), string (2), example4 (2), error (2), reporting (2), monad (2), approach (2), easily (2), modified (2), guard (2), simplify (2), example3 (2), will (2), example2 (2), real (2), cases (2), basic (2), our (2), possible (2), they (2), what (2), example1 (2), get (2), note (2), were (2), readme (2), last (2), log (2), rating (2), downloads (2), dependencies (2), clone (2), source (2), https (2), revised (2), maintainer (2), trško (2), maintainers (2), including (2), revisions (2), browse (2), fold (2), how (2), generic (2), folding (2), produced, pull, requests, welcome, please, don, afraid, contact, mail, fpedantic, building, store, then, argument, else, tolower, showconstr, toconstr, unwords, number, interval, minbound, maxbound, concat, intersperse, fst, lookup, maximum, minimum, wrapped, because, complex, built, top, some, newtype, probably, most, interesting, things, done, would, instead, setter, want, types, function, notice, normally, record, needs, keep, sync, constructor, arguments, operations, dual, doesn, have, restriction, dualfoldendo, pure, common, pattern, arbitrary, great, thing, about, fact, definition, monadplus, alternative, same, exploits, trying, result, keeping, original, value, applications, arise, quite, pathological, lot, ways, handle, concentrate, few, techniques, illustrate, versatility, working, shows, modify, was, without, actually, having, state, such, practice, always, least, monoids, under, composition, therefore, usually, works, situations, instantiated, semigroup, first, purpose, signatures, defined, looks, setters, simple, application, idea, section, taken, live, production, tamed, down, little, back, docs, available, success, reported, build, status, your, votes, yet, estimated, bayesian, average, 6461, total, days, direct, indirect, reverse, distributions, head, tag, repo, issues, tracker, home, page, category, made, 17t16, 33z, revision, 28t23, 14z, uploaded, trsko, gmail, 2013, copyright, tested, transformers, mtl, class, base, changelog, change, versions, rss, candidates, edit, information, trustees, newer, than, included, tarball, unpack, metadata, tar, disable, enable, pedantic, name, manual, fromendo, apply, index, modules, skip, which, contains, well, ghci, extra, also, machinery, various, purposes, builder, report, vulnerability, propose, tags, library, bsd3, user, accounts, upload, new, search,


Text of the page (random words):
endo endomorphism utilities hackage package search browse what s new upload user accounts endo endomorphism utilities bsd3 data library propose tags report a vulnerability package defines extra functions for data monoid endo data type and also generic endomorphism folding machinery generic endomorphism folding can be used for various purposes including as a builder here is an example how to use it with optparse applicative package data verbosity silent normal verbose annoying deriving show data config config verbosity filepath deriving show options parser config options runidentityt runendo defaultconfig options where all this identityt clutter is here to avoid orphan instances options identityt parser endo config options foldendo outputoption identityt parser maybe e config verbosityoption identityt parser maybe e config annoyingflag identityt parser e config silentflag identityt parser e config verboseflag identityt parser e config defaultconfig config defaultconfig config normal main io main execparser info options fulldesc print ghci main o an out put annoying config annoying an out put for details how individual option parsers look like see module data monoid endo fold which contains other examples as well as this one skip to readme modules index data monoid data monoid endo data monoid endo anendo data monoid endo apply data monoid endo fold data monoid endo fromendo flags manual flags name description default pedantic pass additional warning flags to ghc disabled use f flag to enable a flag or f flag to disable that flag more info downloads endo 0 3 0 1 tar gz browse cabal source package package description revised from the package note this package has metadata revisions in the cabal description newer than included in the tarball to unpack the package including the revisions use cabal get maintainer s corner package maintainers petertrsko for package maintainers and hackage trustees edit package information candidates 0 1 0 0 0 1 0 1 0 1 0 2 0 2 0 0 0 2 0 1 0 3 0 0 0 3 0 1 versions rss 0 1 0 0 0 1 0 1 0 1 0 2 0 2 0 0 0 2 0 1 0 3 0 0 0 3 0 1 info change log changelog md dependencies base 4 6 5 between 0 9 1 data default class 0 0 0 2 mtl 2 1 3 transformers 0 3 0 6 details tested with ghc 7 6 3 ghc 7 8 4 ghc 7 10 3 ghc 8 0 1 license bsd 3 clause copyright c 2013 2016 peter trško author peter trško maintainer peter trsko gmail com uploaded by petertrsko at 2016 02 28t23 16 14z revised revision 1 made by petertrsko at 2016 07 17t16 14 33z category data home page https github com trskop endo bug tracker https github com trskop endo issues source repo head git clone git github com trskop endo git this git clone git github com trskop endo git tag 0 3 0 1 distributions reverse dependencies 1 direct 0 indirect details downloads 6461 total 20 in the last 30 days rating no votes yet estimated by bayesian average your rating λ λ λ status docs available build log last success reported on 2016 02 28 all 1 reports readme for endo 0 3 0 1 back to package description endo description endomorphism utilities usage examples examples in this section were taken from real live production code but they were tamed down a little basic idea lets define simple application config data type as data verbosity silent normal verbose annoying deriving show data config config _verbosity verbosity _outputfile filepath deriving show now lets define setters for _verbosity and _outputfile setverbosity verbosity e config setverbosity b cfg cfg _verbosity b setoutputfile filepath e config setoutputfile b cfg cfg _outputfile b note that e is defined in data monoid endo module and it looks like type e a a a its purpose is to simplify type signatures now lets get to our first example example1 e config example1 appendo foldendo setverbosity annoying setoutputfile an out put above example shows us that it is possible to modify config as if it was a monoid but without actually having to state it as such in practice it is not always possible to define it as monoid or at least as a semigroup endomorphism are monoids under composition therefore they are what usually works in situations when the modified data type can not be instantiated as a monoid working with corner cases in real applications corner cases arise quite easily e g filepath has one pathological case and that is there is a lot of ways to handle it here we will concentrate only few basic techniques to illustrate versatility of our approach trying to set output file to will result in keeping original value setoutputfile2 filepath e config setoutputfile2 id setoutputfile2 fp setoutputfile fp example2 e config example2 appendo foldendo setverbosity annoying setoutputfile2 an out put same as above but exploits instance anendo a anendo maybe a setoutputfile3 filepath maybe e config setoutputfile3 nothing setoutputfile3 fp just setoutputfile fp example3 e config example3 appendo foldendo setverbosity annoying setoutputfile3 an out put great thing about maybe is the fact that it has alternative and monadplus instances using guard may simplify setoutputfile3 in to definition like following setoutputfile3 filepath maybe e config setoutputfile3 fp setoutputfile fp guard not null fp following example uses common pattern of using either as error reporting monad this approach can be easily modified for arbitrary error reporting monad setoutputfile4 filepath either string e config setoutputfile4 left output file empty file path setoutputfile4 fp right setoutputfile fp example4 either string e config example4 appendo foldendo pure setverbosity annoying setoutputfile4 an out put notice that above example uses applicative style normally when using this style for setting record values one needs to keep in sync order of constructor arguments and order of operations using foldendo and its dual dualfoldendo doesn t have this restriction lenses instead of setter functions one may want to use lenses in this example we use types from lens package but definitions use function from between package verbosity lens config verbosity verbosity _verbosity s b s _verbosity b outputfile lens config filepath outputfile _outputfile s b s _outputfile b now setting values of config would look like example5 e config example5 appendo foldendo verbosity annoying outputfile an out put other usage probably one of the most interesting things that can be done with this module is following instance anendo verbosity where type endooperateson verbosity config anendo endo set verbosity newtype outputfile outputfile filepath instance anendo outputfile where type endooperateson outputfile config anendo outputfile fp endo outputfile fp example6 e config example6 appendo foldendo annoying outputfile an out put using with optparse applicative this is a more complex example that defines parser for optparse applicative built on top of some of the above definitions options parser config options runidentityt runendo defaultconfig options where all this identityt clutter is here to avoid orphan instances options identityt parser endo config options foldendo outputoption identityt parser maybe e config verbosityoption identityt parser maybe e config annoyingflag identityt parser e config silentflag identityt parser e config verboseflag identityt parser e config defaultconfig config defaultconfig config normal main o an out put annoying config _verbosity annoying _outputfile an out put main io main execparser info options fulldesc print parsers for individual options and flags are wrapped in identityt because there is no following instance instance foldendoargs r foldendoargs parser r but there is instance applicative f foldendoargs r foldendoargs identityt f r functions used by the above code example outputoption identityt parser maybe e config outputoption identityt optional option set outputfile parsefilepath short o long output metavar file help store output in to a file where parsefilepath eitherreader s if null s then left option argument can not be empty file path else right s verbosityoption identityt parser maybe e config verbosityoption identityt optional option set verbosity parseverbosity long verbosity metavar level help set verbosity to level where verbositytostr map tolower data showconstr data toconstr verbosityintvalues show fromenum v v v silent annoying verbositystrvalues default normal verbositytostr v v v silent annoying parseverbosityerror unwords verbosity can be only number from interval show map fromenum minbound maxbound verbosity or one of the following concat intersperse map fst verbositystrvalues parseverbosity eitherreader s case lookup s verbosityintvalues verbositystrvalues of just v right v nothing left parseverbosityerror annoyingflag identityt parser e config annoyingflag identityt flag id verbosity annoying long annoying help set verbosity to maximum silentflag identityt parser e config silentflag identityt flag id verbosity silent short s long silent help set verbosity to minimum verboseflag identityt parser e config verboseflag identityt flag id verbosity verbose short v long verbose help be verbose building options fpedantic disabled by default pass additional warning flags to ghc license the bsd 3 clause license see license file for details contributions contributions pull requests and bug reports are welcome please don t be afraid to contact author using github or by e mail produced by hackage and cabal 3 16 1 0
Images from subpage: "hackage.haskell.org/packages/tag/data" Verify
Images from subpage: "hackage.haskell.org/packages/tag/library" Verify
Images from subpage: "hackage.haskell.org/package/endo/tags/edit" Verify
Images from subpage: "hackage.haskell.org/package/endo-0.3.0.1/docs/Data-Monoid-En... " Verify
Images from subpage: "hackage.haskell.org/reports/1" Verify

Verified site has: 46 subpage(s). Do you want to verify them? Verify pages:

1-5 6-10 11-15 16-20 21-25 26-30 31-35 36-40 41-45 46-46


The site also has references to the 2 subdomain(s)

  hackage.haskell.org  Verify   haskell.org  Verify


Top 50 hastags from of all verified websites.

Supplementary Information (add-on for SEO geeks)*- See more on header.verify-www.com

Header

HTTP/2 200
server nginx/1.24.0 (Ubuntu)
content-type text/html; charset=utf-8
cache-control public, max-age=300
content-encoding gzip
via 1.1 varnish, 1.1 varnish
accept-ranges bytes
age 0
date Fri, 17 Jul 2026 07:29:00 GMT
x-served-by cache-dfw-kdfw8210055-DFW, cache-rtm-ehrd2290034-RTM
x-cache MISS, MISS
x-cache-hits 0, 0
x-timer S1784273340.724938,VS0,VE507
vary Accept, Accept-Encoding

Meta Tags

title="endo: Endomorphism utilities."
name="viewport" content="width=device-width, initial-scale=1"
name="twitter:card" content="summary"
name="twitter:site" content="@hackage"
property="og:url" content="//hackage.haskell.org/package/endo"
property="og:site_name" content="Hackage"
property="og:type" content="website"
property="og:title" content="endo"
property="og:description" content="Endomorphism utilities."

Load Info

page size11039
load time (s)0.618803
redirect count0
speed download17862
server IP 151.101.205.170
* all occurrences of the string "http://" have been changed to "htt???/"