# Analyse big Prolog terms using SWISH

**URL:** <https://swi-prolog.discourse.group/t/analyse-big-prolog-terms-using-swish/6086>\
**Category:** Nice to know\
**Created:** [January 11, 2023, 4:40pm UTC](https://swi-prolog.discourse.group/t/analyse-big-prolog-terms-using-swish/6086 "2023-01-11T16:40:37Z")\
**Posts on this page:** 3\
**Page:** 1

<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:** [January 11, 2023, 4:40pm UTC](https://swi-prolog.discourse.group/t/analyse-big-prolog-terms-using-swish/6086/1 "2023-01-11T16:40:37Z")

</div>

Today I found myself looking at this term in the logs.

```prolog
goal_failed(swish_chat:('.'(v{anonymous_avatar:'/icons/avatar.svg#1939449',avatar:'/icons/avatar.svg#1939449',avatar_source:client},put(_12328{check_login:true,consumer:'VU',reconnect:'I0AP_7G0ZtIYumjDJdQ_8g',type:welcome,uid:'795491e4-91cc-11ed-8233-0242ac110004',visitors:218,wsid:'793d817a-91cc-11ed-bed7-0242ac110004'}),_12412),hub_send('793d817a-91cc-11ed-bed7-0242ac110004',json(_12412)))).

```

Pretty unreadable, no? Well, go to SWISH and run the query

```
A = <this huge term>

```

and see this nice layout. Hovering highlights subterms and clicking a functor allows for an alternative view of the subterm (collapse, horizontal, vertical or smart (automatic, default)).

 ![image](https://global.discourse-cdn.com/free1/uploads/swiprolog/original/2X/3/328a2da2faeca9d6cc8f79d325a7c77fac5c68ba.png)

---

<div class="post-metadata">

**Author:** ![peter.ludemann](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/peter.ludemann/32/48_2.png) [@peter.ludemann](https://swi-prolog.discourse.group/u/peter.ludemann)\
**Post date:** [January 11, 2023, 7:53pm UTC](https://swi-prolog.discourse.group/t/analyse-big-prolog-terms-using-swish/6086/2 "2023-01-11T19:53:15Z")

</div>

And for those (like me) who live in emacs, [print\_term/2](https://www.swi-prolog.org/pldoc/doc_for?object=prolog_pretty_print%3Aprint_term/2) is useful:

```prolog
?- X = goal_failed(swish_chat:('.'(v{anonymous_avatar:'/icons/avatar.svg#1939449',avatar:'/icons/avatar.svg#1939449',avatar_source:client},put(_12328{check_login:true,consumer:'VU',reconnect:'I0AP_7G0ZtIYumjDJdQ_8g',type:welcome,uid:'795491e4-91cc-11ed-8233-0242ac110004',visitors:218,wsid:'793d817a-91cc-11ed-bed7-0242ac110004'}),_12412),hub_send('793d817a-91cc-11ed-bed7-0242ac110004',json(_12412)))),
| print_term(X, [tab_width(0), right_margin(60)]).
goal_failed(swish_chat : ( '.'(v{ anonymous_avatar:'/icons/avatar.svg#1939449',
                     avatar:'/icons/avatar.svg#1939449',
                     avatar_source:client
                   },
                  put(_{ check_login:true,
                         consumer:'VU',
                         reconnect:'I0AP_7G0ZtIYumjDJdQ_8g',
                         type:welcome,
                         uid:'795491e4-91cc-11ed-8233-0242ac110004',
                         visitors:218,
                         wsid:'793d817a-91cc-11ed-bed7-0242ac110004'
                       }),
                  A),
              hub_send('793d817a-91cc-11ed-bed7-0242ac110004',
                       json(A))
            ))

```

---

<div class="post-metadata">

**Author:** ![toblo](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/toblo/32/4214_2.png) [@toblo](https://swi-prolog.discourse.group/u/toblo)\
**Post date:** [January 17, 2023, 4:16am UTC](https://swi-prolog.discourse.group/t/analyse-big-prolog-terms-using-swish/6086/3 "2023-01-17T04:16:37Z")

</div>

That’s the kind of thing i love to see 🙂
