NAME
FP::PureHash
SYNOPSIS
use
FP::PureHash;
my
$h
= purehash
hi
=> 123,
there
=>
"World"
;
my
$h2
=
$h
->set(
"hi"
,
"again"
);
is
$h
->
ref
(
"there"
),
"World"
;
is
$$h
{there},
"World"
;
is show(
$h
),
"purehash('hi' => 123, 'there' => 'World')"
;
is show(
$h2
),
"purehash('hi' => 'again', 'there' => 'World')"
;
is is_pure(
$h2
), 1;
like( (
eval
{ purehash
hi
=> 1,
hi
=> 1,
there
=> 2 } || $@),
qr/^duplicate key: 'hi' at/
);
like( (
eval
{
$$h
{there_} || 1} || $@),
# the detailed exception message may change!
qr/^Attempt to access disallowed key 'there_' in a restricted hash/
);
DESCRIPTION
Hash tables, currently based simply on Perl's internal hashes. They are immutable, and restricted which means that accessing non-existing keys yields an exception.
TODO
- performant functional updates (currently the `set` method simply copies the whole table)
- more methods, move/adapt set functionality from FP::Hash and FP::HashSet
- a maybe_ref that returns FP::Failure or FP::Maybe ?
- non-string keys?
SEE ALSO
Implements: FP::Abstract::Pure, FP::Abstract::Map, FP::Abstract::Equal, FP::Abstract::Show
NOTE
This is alpha software! Read the status section in the package README or on the website.