Recently, Gambit Scheme was ported to the iPad, iPod, and iPhone,[1] and
is even being distributed through the Apple Store.[2]
According to the release announcement, this demonstrates "that you can
distribute on the App Store paid applications written in Scheme and
containing an interpreter, something that wasn't clear with previous
versions of the App Store developer agreement."
I haven't kept up with Apple's developer agreement myself, but if this is
true doesn't it mean that a Forth interpreter could now also be ported to
these platforms?
---
[1] - http://groups.google.com/group/comp.lang.scheme/browse_thread/
thread/e8743289b5201cc9/986efc2effcdb1aa
[2] - http://itunes.apple.com/us/app/gambit-repl/id434534076?mt=8
That said, I think a serial connector that could connect to the iPad/iPhone and allow me to program a bit of hardware in Forth on an iOS device that I could use out in the field could be highly advantageous and a lot of fun to work with. Hell, using Bluetooth to communicate might work equally well and not require additional hardware (or even being co-located within 20' or so).
Jeff M.
> While Apple has relaxed their stance on interpreted languages some
> (mostly due to the use of Lua in video games put out by major
> companies like EA), I believe that Gambit, Chicken, and other
> languages can get by Apple a little easier because they compile to C,
> then build for iOS via Xcode. Forth could do this as well, obviously,
> but I think it might be a bit of work to make an implementation to
> that.
My understanding is that at least the Gambit Scheme release includes a
REPL (text interpreter). There were more details on comp.lang.scheme a
couple weeks ago. I'm not particuarly clear on the nature of Apple's
objections, but I think it has to do with interpreting programs obtained
over a network, rather than things the user keys in locally.
--
(let ((C call-with-current-continuation)) (apply (lambda (x y) (x y)) (map
((lambda (r) ((C C) (lambda (s) (r (lambda l (apply (s s) l)))))) (lambda
(f) (lambda (l) (if (null? l) C (lambda (k) (display (car l)) ((f (cdr l))
(C k))))))) '((#\J #\d #\D #\v #\s) (#\e #\space #\a #\i #\newline)))))