117 lines
2.1 KiB
Plaintext
117 lines
2.1 KiB
Plaintext
|
- how to create a small module
|
||
|
- editor integration
|
||
|
- presentations
|
||
|
- module system
|
||
|
- copy and paste factoring, inverse
|
||
|
- help system
|
||
|
- tetris
|
||
|
- memoization
|
||
|
- editing inspector demo
|
||
|
- dynamic scope, lexical scope
|
||
|
|
||
|
Factor: contradictions?
|
||
|
-----------------------
|
||
|
|
||
|
Have our cake and eat it too
|
||
|
|
||
|
Research -vs- practical
|
||
|
High level -vs- fast
|
||
|
Interactive -vs- deployment
|
||
|
|
||
|
Factor from 10,000 feet
|
||
|
-----------------------
|
||
|
|
||
|
word: named function
|
||
|
vocabulary: module
|
||
|
quotation: anonymous function
|
||
|
classes, objects, etc.
|
||
|
|
||
|
The stack
|
||
|
---------
|
||
|
|
||
|
- Stack -vs- applicative
|
||
|
- Pass by reference, dynamically typed
|
||
|
- Stack languages: you can omit names where they're not needed
|
||
|
- More compositional style
|
||
|
- If you need to name things for clarity, you can:
|
||
|
lexical vars, dynamic vars, sequences, assocs, objects...
|
||
|
|
||
|
Functional programming
|
||
|
----------------------
|
||
|
|
||
|
Quotations
|
||
|
Curry
|
||
|
Continuations
|
||
|
|
||
|
Object-oriented programming
|
||
|
---------------------------
|
||
|
|
||
|
Generic words: sort of like open classes
|
||
|
Tuple reshaping
|
||
|
Editing inspector
|
||
|
|
||
|
Meta programming
|
||
|
----------------
|
||
|
|
||
|
Simple, orthogonal core
|
||
|
|
||
|
Why use a stack at all?
|
||
|
-----------------------
|
||
|
|
||
|
Nice idioms: 10 days ago
|
||
|
Copy and paste factoring
|
||
|
Easy meta-programming
|
||
|
Sequence operations correspond to functional operations:
|
||
|
- curry is adding at the front
|
||
|
- compose is append
|
||
|
|
||
|
UI
|
||
|
--
|
||
|
|
||
|
Written in Factor
|
||
|
renders with OpenGL
|
||
|
Windows, X11, Cocoa backends
|
||
|
You can call Windows, X11, Cocoa APIs directly
|
||
|
OpenGL 2.1 shaders, OpenAL 3D audio...
|
||
|
|
||
|
Tools
|
||
|
-----
|
||
|
|
||
|
Edit
|
||
|
Usages
|
||
|
Profiler
|
||
|
Easy to make your own tools
|
||
|
|
||
|
Implementation
|
||
|
--------------
|
||
|
|
||
|
Two compilers
|
||
|
Generational garbage collector
|
||
|
Non-blocking I/O
|
||
|
|
||
|
Hands on
|
||
|
--------
|
||
|
|
||
|
Community
|
||
|
---------
|
||
|
|
||
|
Factor started in 2003
|
||
|
About a dozen contributors
|
||
|
Handful of "core contributors"
|
||
|
Web site: http://factorcode.org
|
||
|
IRC: #concatenative on irc.freenode.net
|
||
|
Mailing list: factor-talk@lists.sf.net
|
||
|
|
||
|
C library interface
|
||
|
-------------------
|
||
|
|
||
|
Efficient
|
||
|
No need to write C code
|
||
|
Supports floats, structs, unions, ...
|
||
|
Function pointers, callbacks
|
||
|
Here is an example
|
||
|
|
||
|
TerminateProcess
|
||
|
|
||
|
process-handle TerminateProcess
|