Search results for "distribution:FunctionalPerl list"
FP::List - singly linked (purely functional) lists
Purely functional (immutable) singly linked lists are interesting in functional programs because they can be extended and walked directly via recursion. They do not offer efficient random access (O(len)), also there is a constant space overhead and a...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::StrictList - an FP::List that enforces list semantics
FP::List does not enforce its pairs to only contain pairs or null in their rest (cdr) position. Which means that they may end in something else than a null (and operations encountering these will die with "improper list"). FP::StrictList does, which ...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Ops - function wrappers around Perl ops
There's no way to take a code reference to Perl operators, hence a subroutine wrapper is necessary to use them as first-class values (like pass them as arguments to higher-order functions like list_map / ->map). This module provides them. Also simila...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::DBI - DBI with results as lazy lists
Get rows as items in a lazy linked list (functional stream). NOTE: `DBI` is designed so that when running another `execute` on the same statement handle, fetching returns rows for the new execute; this means, a new execute makes it impossible to retr...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Show - give (nice) code representation for debugging purposes
The 'show' function takes a value and returns a string of Perl code which when evaluated should produce an equivalent clone of that value (assuming that the Perl functions used in the string are imported into the namespace where the code is evaluated...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::JSON
Currently just provides `to_json` to turn some kinds of data into a JSON or Mint language string. This module will need some work for more serious use. This somewhat consciously is not implemented as a class--nonetheless, the $settings argument to `t...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Trie - purely functional prefix tree
The trie operations expect an efficiently dissectable sequence (linked list, stream) as the key. Each item denotes the next level in the nested trie levels. The items in the list can be anything with a sensible stringification. To use FP::Trie for st...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Hash
Provides pure functions on hash tables. Note though that hash table updates simply copy the whole hash table, thus you may easily get bad computational complexity. (If you really care about that, and not so much about interoperability with other Perl...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Lazy - lazy evaluation (delayed evaluation, promises)
This implements promises, a data type that represents an unevaluated or evaluated computation. The computation represented by a promise is only ever evaluated once, after which point its result is saved in the promise, and subsequent requests for eva...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Array - pure functions to work with native Perl arrays
To disambiguate from similarly named functions for `FP::List`, they are prefixed with `array_`. These are also used as methods for `FP::PureArray` objects....
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Equal - generic equality comparison
Deep, generic (class controlled) structure equality comparison. Non-objects are hard coded in this module. Objects are expected to have an `FP_Equal_equal` method that is able to take an argument of the same class as the object to compare. If it does...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
Chj::ruse - reload modules
Extended copy of Module::Reload which modifies Exporter.pm so that exports are tracked, so that these are redone as well. One function is exported: ruse. It does the equivalent of Module::Reload->check, and re-exports stuff as far as possible. The fu...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Stream - lazily generated, singly linked (purely functional) lists
`FP::Stream`s (from now on called "streams") are the same as `FP::List`s (from now on called "lists") except that their cells are generated on demand. If your code has got a list in a particular point in time, all the items in the list are calculated...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Either - keep two kinds of values in one kind of place
These are used to mark (wrap) two different kinds of data for proper distinction in a place that should hold either. `Right` is typically used for the 'right' way, or successful path, or similar. `Left` would be for the other case, for example to ind...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
Chj::xopen
Constructors around Chj::IO::File....
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Struct - classes for functional perl
Create functional setters (i.e. setters that return a copy of the object so as to leave the original unharmed), take predicate functions (not magic strings) for dynamic type checking, simpler than Class::Struct. Also creates constructor methods: "new...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Failure - failure values
Values meant to represent errors/failures and to be distinguishable from non-error values. They are overloaded to be false in boolean context (although doing a boolean test is not safe to distinguish from non-failure values, as obviously those includ...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::Optional - dealing with optional values
Places holding or code passing optional values do either hold or pass a 'real' value, or the absence of a value ('nothing'). There are two straight-forward ways to return 'nothing' from a function: undef and the empty list. The empty list has the adv...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC
FP::IOStream
Lazy IO (well, input), by reading items lazily as stream items. (It's arguable whether that is a good idea; Haskell uses different approaches nowadays. But it's still a nice way to do things if you're careful.)...
PFLANZE/FunctionalPerl-0.72.76 - 22 Jan 2023 15:12:41 UTC