If you just want to pass a value via call-by-reference, you can do

fun{a:vt@ype}
foo(x: a): ... = let
   var x = x
   // now the name 'x' refers to a variable, which is a form of left-value
  // that can be passed via call-by-reference
... ...

On Mon, Sep 3, 2018 at 10:09 PM Hongwei Xi <gmh...@gmail.com> wrote:

> What is aptr(l)?
>
> Here is some code that may be helpful:
>
> extern
> fun
> {a:vt0p}
> ptr_alloc((*void*))
>   :<> [l:agz] (a? @ l, mfree_gc_v(l) | ptr(l))
> // end of [ptr_alloc]
>
> extern
> fn
> {a:vt@ype}
> as_view(a):
> [l:addr | l > null]
> (a @ l, mfree_gc_v(l) | ptr(l))
>
> implement
> {a}
> as_view(x) = let
>   val
>   (pf,fpf|p) =
>   ptr_alloc<a>()
> in
>   !p := x; (pf, fpf | p)
> end
>
>
> On Mon, Sep 3, 2018 at 9:15 PM Vanessa McHale <vanessa.mch...@iohk.io>
> wrote:
>
>> Is there any way to implement
>>
>> extern
>> fn {a:vt@ype} as_view (a) : [ l : addr | l > null ] (a @ l | aptr(l))
>>
>> extern
>> fn {a:vt@ype} as_value {l:addr} ((a @ l | aptr(l))) : a
>>
>> ?
>>
>> I've tried using view@ and addr@ but it seems they're for stack
>> allocations. I suppose I could write my own view in place of using a @
>> l, but I don't see any way around addr@.
>>
>> Thanks!
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "ats-lang-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to ats-lang-users+unsubscr...@googlegroups.com.
>> To post to this group, send email to ats-lang-users@googlegroups.com.
>> Visit this group at https://groups.google.com/group/ats-lang-users.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/ats-lang-users/af2fe422-c973-2353-7d8d-b6719a5cdc1c%40iohk.io
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"ats-lang-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ats-lang-users+unsubscr...@googlegroups.com.
To post to this group, send email to ats-lang-users@googlegroups.com.
Visit this group at https://groups.google.com/group/ats-lang-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ats-lang-users/CAPPSPLqVGBkU5FhAjdNzhGk7J68gbE%3DMJ1iZC-hQvEzh6saQ8A%40mail.gmail.com.

Reply via email to