# Example code not running

**URL:** <https://discourse.ats-lang.org/t/example-code-not-running/258>\
**Category:** Google Group\
**Created:** [August 20, 2013, 2:01pm UTC](https://discourse.ats-lang.org/t/example-code-not-running/258 "2013-08-20T14:01:56Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Chotu\_S](https://avatars.discourse-cdn.com/v4/letter/c/7cd45c/32.png) [@Chotu\_S](https://discourse.ats-lang.org/u/Chotu_S)\
**Post date:** [August 20, 2013, 2:01pm UTC](https://discourse.ats-lang.org/t/example-code-not-running/258/1 "2013-08-20T14:01:56Z")

</div>

Hello,

I am unable to try out the code given here  
[http://www.ats-lang.org/DOCUMENT/INTPROGINATS/HTML/x3298.html](http://www.ats-lang.org/DOCUMENT/INTPROGINATS/HTML/x3298.html) . I am  
using ats-lang-anairiats-0.2.9 on ubuntu.

I get following compile error :

572(line=34, offs=11) – 588(line=34, offs=27): error(ccomp): the templatedefinition  
for [ptr\_get1] is unavailable at [ptr\_get1$1695\_ats\_int\_type].

Code :

viewtypedef tptr (a:t@ype, l:addr) = (a @ l | ptr l)

extern  
fun{a:t@ype}  
ptr\_get1 {l:addr} (pf: !a @ l \>\> a @ l | p: ptr l): a

extern fun{a:t@ype}  
ptr\_set1 {l:addr} (pf: !a? @ l \>\> a @ l | p: ptr l , x: a): void

fn getinc  
{l:addr} {n:nat} (  
cnt: !tptr (int(n), l) \>\> tptr (int(n+1), l)  
) : int(n) = n where {  
val n = ptr\_get1\<int(n)\> (cnt.0 | cnt.1)  
val () = ptr\_set1\<int(n+1)\> (cnt.0 | cnt.1, n+1)  
} // end of [getinc]

implement main () =  
begin  
print("\n");  
end

Previous examples using ptr\_get1 worked just fine , but this i cannot  
figure what is the problem,

Thanks

---

<div class="post-metadata">

**Author:** ![gmhwxi](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@gmhwxi](https://discourse.ats-lang.org/u/gmhwxi)\
**Post date:** [August 20, 2013, 2:12pm UTC](https://discourse.ats-lang.org/t/example-code-not-running/258/2 "2013-08-20T14:12:13Z")

</div>

Please have the following line at the beginning of your code:

staload \_(_UN_) = “prelude/DATS/unsafe.dats”

---

<div class="post-metadata">

**Author:** ![Chotu\_S](https://avatars.discourse-cdn.com/v4/letter/c/7cd45c/32.png) [@Chotu\_S](https://discourse.ats-lang.org/u/Chotu_S)\
**Post date:** [August 20, 2013, 2:22pm UTC](https://discourse.ats-lang.org/t/example-code-not-running/258/3 "2013-08-20T14:22:21Z")

</div>

I still get the same error :

382(line=21, offs=11) – 399(line=21, offs=28): error(ccomp): the templatedefinition  
for [ptr\_get1] is unavailable at [ptr\_get1$1716\_ats\_int\_type].

---

<div class="post-metadata">

**Author:** ![gmhwxi](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@gmhwxi](https://discourse.ats-lang.org/u/gmhwxi)\
**Post date:** [August 20, 2013, 2:32pm UTC](https://discourse.ats-lang.org/t/example-code-not-running/258/4 "2013-08-20T14:32:39Z")

</div>

Sorry. I should have read your question more carefully.

Here is a working version:

vtypedef  
tptr (a:t@ype, l:addr) = (a @ l | ptr l)

(\* \*\*\*\*\*\* \*\*\*\*\*\* \*)

extern  
fun{a:t@ype}  
ptr\_get1 {l:addr} (pf: !a @ l \>\> a @ l | p: ptr l): a  
extern  
fun{a:t@ype}  
ptr\_set1 {l:addr} (pf: !a? @ l \>\> a @ l | p: ptr l , x: a): void

implement{a} ptr\_get1 (pf | p) = !p  
implement{a} ptr\_set1 (pf | p, x) = !p := x

(\* \*\*\*\*\*\* \*\*\*\*\*\* \*)

fn getinc  
{l:addr} {n:nat} (  
cnt: !tptr (int(n), l) \>\> tptr (int(n+1), l)  
) : int(n) = n where {  
val n = ptr\_get1\<int(n)\> (cnt.0 | cnt.1)  
val () = ptr\_set1\<int(n+1)\> (cnt.0 | cnt.1, n+1)  
} // end of [getinc]

(\* \*\*\*\*\*\* \*\*\*\*\*\* \*)

implement  
main () =  
{  
var cnt: int = 0  
val tcnt = (view@cnt | &cnt)  
val () = println! ("getinc(tcnt) = ", getinc(tcnt))  
val () = println! ("getinc(tcnt) = ", getinc(tcnt))  
val () = println! ("getinc(tcnt) = ", getinc(tcnt))  
val (pf | p) = tcnt  
prval () = view@cnt := pf  
//  
} // end of [main0]
