有限リンクトリストの長さ,複製,最後の要素,最後だけ除いたもの

sub Llength{#長さ
    my $l=shift;
    my $len=0;
    return 0 unless Lhead($l);
    return Llength(Ltail($l))+1;
}

sub Lduplicate{#複製
    my $l=shift;
    return [Lhead($l),undef] unless Ltail($l);
    return [Lhead($l),Lduplicate(Ltail($l))];
}

sub Llast{#最後の要素
    my $l=shift;
    return Lhead($l) unless Ltail($l);
    Llast(Ltail($l));
}

sub Linit{#最後の要素だけ削除,tailの逆
    my $l=shift;
    return undef unless Ltail($l);
    return [Lhead($l),Linit(Ltail($l))];
}

みる人がみたら何を構成してるのかは自明でしょう.まだreverseやtake,foldの類がありません.

あと,head/tailなどは名前を変えました.