# [toronto-lisp] Factor notes, and website discussion

Vishvajit Singh vishvajitsingh at gmail.com
Mon Feb 9 03:54:18 UTC 2009

```Hi everyone,

I've attached the notes from my Factor presentation last week, along
with some of the code I demonstrated. I'm new at giving this kind of
presentation, so it was a learning experience for me. I think that the
live presentation I gave (actual coding, mistakes and all) worked a
lot better than a PowerPoint-style one would have. I hope to give more
presentations in the future.

This stuff really ought to go on a website. Let's set up a Toronto
Lisp website for tutorials, code snippets, meeting minutes, project
collaboration, and so on. I believe someone said they already had a
domain name registered, which is great. How about we set up a Wiki at
first, and see where it goes?

Vish Singh
-------------- next part --------------
Factor presentation to the Toronto Lisp Users' Group - Tuesday, February 3, 2009

- Introduction
- Show the basics of FORTH (slide)
- Factor: like FORTH, but modern, compiled, lots of libraries, fun to play with
- Launch Factor, demonstrate use of stack
- push 2, 3, "bob"
- Demonstrate basic operations
- +, *
- length
- Demonstrate stack manipulators
- swap, drop, dup, over, rot
- Demonstrate quotations
- [ 1 + ]
- call
- Demonstrate if
- booleans
- 2 0 > [ "greater" print ] [ "lesser" print ] if
- demonstrate defining a word for the above operation, check-number
- Demonstrate ctrl-shift-h
- Show the binary tree example (slide)
- Show the code, and demonstrate, the time server example

-------------- next part --------------
Factor presentation
By Vish Singh
-------------------

The basic idea of FORTH:

Prefix:     f(x, y, z) = + x * y z                                  (defun f (x y z)
(+ x (* y z)))

Infix:      f(x, y, z) = x + y * z

Postfix:    f(x, y, z) = x y z * +

And in FORTH..

: f * + ;

DEFINE the word f as the concatenation of the two words * and +.

We assume the user has put x, y, and z on the stack before calling f.
The effect of f is to remove x, y, and z, and leave only the result of the computation.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Factor-slide2.factor
Type: application/octet-stream
Size: 947 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/toronto-lisp/attachments/20090208/8e40921b/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: time-server.factor
Type: application/octet-stream
Size: 521 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/toronto-lisp/attachments/20090208/8e40921b/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fun.factor
Type: application/octet-stream
Size: 1282 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/toronto-lisp/attachments/20090208/8e40921b/attachment-0002.obj>
```