The template is expected to be fully applied but it is not

I’m pretty sure I’m doing something terribly silly with this, since the
error sounds like it should be obvious but …

vtypedef
geneslst = List0_vt (genes)

absvtype grcnf = ptr
assume grcnf = geneslst
vtypedef grcnflst = List0_vt (grcnf)

extern
fun {n:int} grcnf_length(gcnf: grcnf):<> int (n)

implement
grcnf_length (gcnf) = length (gcnf)

in list_vt.sats:

fun{x:vt0p}
list_vt_length {n:int} (xs: !list_vt (INV(x), n)):<> int n
overload length with list_vt_length

Should be:

extern
fun grcnf_length{n:int} (gcnf: grcnf):<> int (n)

However, this interface cannot be implemented as n does not occur in grcnf.

Try:

extern
fun grcnf_length (grcnf): int // tracking effects is not really meaningful
in such a caseOn Monday, February 17, 2014 6:40:02 PM UTC-5, Brandon Barker wrote:

I’m pretty sure I’m doing something terribly silly with this, since the
error sounds like it should be obvious but …

vtypedef
geneslst = List0_vt (genes)

absvtype grcnf = ptr
assume grcnf = geneslst
vtypedef grcnflst = List0_vt (grcnf)

extern
fun {n:int} grcnf_length(gcnf: grcnf):<> int (n)

implement
grcnf_length (gcnf) = length (gcnf)

in list_vt.sats:

fun{x:vt0p}
list_vt_length {n:int} (xs: !list_vt (INV(x), n)):<> int n
overload length with list_vt_length