# Assert in swish

**URL:** <https://swi-prolog.discourse.group/t/assert-in-swish/562>\
**Category:** General\
**Created:** [April 19, 2019, 9:48pm UTC](https://swi-prolog.discourse.group/t/assert-in-swish/562 "2019-04-19T21:48:52Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![anniepoo](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/anniepoo/32/12_2.png) [@anniepoo](https://swi-prolog.discourse.group/u/anniepoo)\
**Post date:** [April 19, 2019, 9:48pm UTC](https://swi-prolog.discourse.group/t/assert-in-swish/562/1 "2019-04-19T21:48:52Z")

</div>

Helping a student build an address book in swish.

```
:- dynamic addr/2.

check(N, A) :- addr(N,A).
add(N,A) :- writeln(N),assert(addr(N,A)).
del(N,A) :- retractall(addr(N,A)).

```

query add/2  
then query check/2  
false.

query  
add(bob, road1),check(N,A).  
works

The semantics of assert are borked. Is it now making a new pengine each time?

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [April 20, 2019, 8:00am UTC](https://swi-prolog.discourse.group/t/assert-in-swish/562/2 "2019-04-20T08:00:56Z")

</div>

Every query in SWISH creates its isolated environment. That is one of the beauties and has always been like that. Only if you configured SWISH without sandbox you can assert in a permanent module and escape this restriction.

---

<div class="post-metadata">

**Author:** ![anniepoo](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/anniepoo/32/12_2.png) [@anniepoo](https://swi-prolog.discourse.group/u/anniepoo)\
**Post date:** [April 20, 2019, 5:29pm UTC](https://swi-prolog.discourse.group/t/assert-in-swish/562/3 "2019-04-20T17:29:40Z")

</div>

crazy teachers give students problems that use lots of assert/retract, and they come to me confused.
