Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Unusual style of documentation?

by LittleJack (Beadle)
on Jun 10, 2022 at 01:21 UTC ( #11144632=perlquestion: print w/replies, xml ) Need Help??

LittleJack has asked for the wisdom of the Perl Monks concerning the following question:

I'm just looking at the CPAN page for Types::Standard and it documents some of the Types as follows:

Ref[`a]

Any defined reference value, including blessed objects.

I've never seen that `a before in perl documentation. What does it mean exactly?

Replies are listed 'Best First'.
Re: Unusual style of documentation?
by Fletch (Bishop) on Jun 10, 2022 at 04:01 UTC

    Looks vaguely reminiscent of ML/Ocaml/Fsharp typing where 'a is used to indicate an unbound type variable. E.g. a list of integers would be int list, whereas the polymorphic empty list [] has a type 'a list; a simple tree datatype with nodes capable of holding elements of any arbitrary type could be declared like:

    type 'a tree = | Leaf | Node of 'a tree * 'a * 'a tree

    Given that my guess is it's attempting to say that whatever can be a reference to any arbitrary type of value.

    Edit: Ocaml data type tutorial for more examples and explanation.

    Morning thought: Actually their tree example looks weird because (upon further reflection) I'd have expected the leaf constructor to be Leaf 'a (to hold a value of 'a in it, vs a node which has a tuple of the left and right 'a tree with the node's item's 'a value). Then again I've just been intermittently reading Real World Ocaml off and on so . . . .

    The cake is a lie.
    The cake is a lie.
    The cake is a lie.

Re: Unusual style of documentation?
by kcott (Archbishop) on Jun 10, 2022 at 09:19 UTC
Re: Unusual style of documentation?
by hv (Parson) on Jun 10, 2022 at 03:39 UTC

    I've never seen it before either, it is surprising that this documentation doesn't appear to define it.

    The backtick ` appears to be a sigil the author is using for a recursively-defined type, while the a appears to be simply a variable name: "let `a be any recursively defined type, then Ref[`a] declares a reference to that same type".

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://11144632]
Approved by GrandFather
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (4)
As of 2022-09-25 23:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I prefer my indexes to start at:




    Results (116 votes). Check out past polls.

    Notices?