From: Mark Tarver
Subject: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <1168455544.100223.91870@k58g2000hse.googlegroups.com>
Qi 7.2 for CLisp and CMUCL
_______________________

Qi 7.2 is now available for download from www.lambdassociates.org.
Amongst several bugfixes and enhancements, the most significant
improvement has been to make Qi portable over Linux.  Qi 7.2 runs under
CLisp (Linux and Windows) and CMU Common Lisp. CMU has given an
impressive performance on several benchmarks.

Thanks to Carl Shapiro for helping over some niggles in the port.  Also
to the Linux news group for feedback on Linux.

Why the Release was Delayed
__________________________

This release has been delayed for a year since its intended date in
late 2005.   I actually even built a working Linux version of Qi at
Newcastle Uni. late that year.  But in October 2005 I contracted a
blood infection that became systemic and affected the lungs.  This
pretty much brought Qi development to a halt for most of 2006.
Despite visits to Harley Street, this infection proved resistant to
Western antibiotics and it was only after a trip to an Ayurvedic clinic
in India, that the condition started to improve.   I am now nearly
returned to health and things will move much faster from this point.

In two weeks I am returning to India in a much better state to visit
the same clinic to deepen my studies into Eastern medicine, tantra and
yogic practice and merge them with my understanding of Taoist practice.


Qi/tk
____

Qi/tk joins Qi to TCL/tk to produce type secure graphics.   This is the
next step in developing Qi as a programming system.  You can see a
preview at www.lambdassociates.org/qi-tk-preview/index.htm.  Expect a
release early summer 2007.

Since a lot of time in the clinic is spent sitting around (no TVs,
newspapers), I'm bringing over a laptop to continue my development of
Qi/tk over there.

Donations
_________

Lambda Associates now includes a facility for donation
(www.lambdassociates.org/donation.htm) and a low cost exemption from
the GPL for those who want control of their work and the option of
closed source (www.lambdassociates.org/licence.htm). If you're
downloading Qi for personal or educational use, consider a donation to
keep the Lisp community competitive with ML and Haskell in this area.
It also helps pay for my treatment!

Mark

From: Joachim Durchholz
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <eo403d$b5i$1@online.de>
Mark Tarver schrieb:
> Qi/tk joins Qi to TCL/tk to produce type secure graphics.

Just being curious: why did you choose tk over, say, GTK+?

Regards,
Jo
From: Ken Tilton
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <RHgph.114$fT1.4@newsfe11.lga>
Joachim Durchholz wrote:
> Mark Tarver schrieb:
> 
>> Qi/tk joins Qi to TCL/tk to produce type secure graphics.
> 
> 
> Just being curious: why did you choose tk over, say, GTK+?

fwiw, I chose Celtk over Cells-Gtk because (a) last I heard GTk 2.o is 
not there yet on the mac and (b) I think it is neat getting Tcl in the 
bargain, for additional portable goodies beyond the GUI widget set.

we now return you to your original question to Mr Tarver...

kt

-- 
The Dalai Lama gets the same crap all the time.
   -- Kenny Tilton on c.l.l when accused of immodesty
From: Mark Tarver
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <1168505316.784280.192840@o58g2000hsb.googlegroups.com>
Joachim Durchholz wrote:
> Mark Tarver schrieb:
> > Qi/tk joins Qi to TCL/tk to produce type secure graphics.
>
> Just being curious: why did you choose tk over, say, GTK+?
>
> Regards,
> Jo

A combination of reasons;

1.  TCL/tk is a powerful command language in its own right with a very
rich widget set with many parameters.
2.  It has a lot of support on the developers site.
3.  I got hold of a very nice TCL/Tk introduction - about 800 pages
detailing the language.
4.  Its a standard way of extending a language to provide graphics.

Mark
From: Joachim Durchholz
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <eo52a0$2ff$1@online.de>
Mark Tarver schrieb:
> Joachim Durchholz wrote:
>> Just being curious: why did you choose tk over, say, GTK+?
> 
> A combination of reasons;
> 
> 1.  TCL/tk is a powerful command language in its own right with a very
> rich widget set with many parameters.
> 2.  It has a lot of support on the developers site.
> 3.  I got hold of a very nice TCL/Tk introduction - about 800 pages
> detailing the language.
> 4.  Its a standard way of extending a language to provide graphics.

Thanks.
Last time I looked at TCL, it had mandatory shallow binding and no 
useful nested data structures.
Has this changed?

Regards,
Jo
From: Mark Tarver
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <1168514614.964152.44680@o58g2000hsb.googlegroups.com>
As far as non-graphical programming is concerned TCL *on its own* is
considerably *less* powerful for many purposes than Qi - like most
imperative languages in fact.  Since I'm not dependent on TCL for
bread-and-potatoes programming, I'm not bothered about how powerful TCL
is in its own right.  The widget toolset in TCL/Tk is really my target
and that is powerful, full featured and well documented.   I can also
download web pages into Qi/tk in a single command through TCL/tk.

All imperative languages are fairly underpowered as I see them; so
arguing the merits
of one versus another is like arguing whether the WWI Albatross is
better than than the Sopwith Pup.

Mark

You can connect Joachim Durchholz wrote:
> Mark Tarver schrieb:
> > Joachim Durchholz wrote:
> >> Just being curious: why did you choose tk over, say, GTK+?
> >
> > A combination of reasons;
> >
> > 1.  TCL/tk is a powerful command language in its own right with a very
> > rich widget set with many parameters.
> > 2.  It has a lot of support on the developers site.
> > 3.  I got hold of a very nice TCL/Tk introduction - about 800 pages
> > detailing the language.
> > 4.  Its a standard way of extending a language to provide graphics.
>
> Thanks.
> Last time I looked at TCL, it had mandatory shallow binding and no
> useful nested data structures.
> Has this changed?
> 
> Regards,
> Jo
From: Joachim Durchholz
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <eo5f1j$pn3$1@online.de>
Mark Tarver schrieb:
> As far as non-graphical programming is concerned TCL *on its own* is
> considerably *less* powerful for many purposes than Qi - like most
> imperative languages in fact.  Since I'm not dependent on TCL for
> bread-and-potatoes programming, I'm not bothered about how powerful TCL
> is in its own right.

Ok, then I understand.

What tipped me off was

>> Mark Tarver schrieb:
>>> 1.  TCL/tk is a powerful command language in its own right [...]

Regards,
Jo
From: Nils M Holm
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <eo54vg$6b1$1@online.de>
In comp.lang.lisp Joachim Durchholz <··@durchholz.org> wrote:
> Mark Tarver schrieb:
> > 1.  TCL/tk is a powerful command language in its own right with a very
> > rich widget set with many parameters.
> > 2.  It has a lot of support on the developers site.
> > 3.  I got hold of a very nice TCL/Tk introduction - about 800 pages
> > detailing the language.
> > 4.  Its a standard way of extending a language to provide graphics.
> 
> Thanks.
> Last time I looked at TCL, it had mandatory shallow binding and no 
> useful nested data structures.
> Has this changed?

You do not have to use TCL to get Tk. There are Tk interfaces to
many other languages. The TCL Windowing Shell (wish) provides a
nice and portable interface to Tk, which easily can be (ab?)used
to form a protocol layer between your language and Tk. All you
need is two pipes to talk to wish.

BTW, will Qi/Tk use wish or link to the Tk library directly?

-- 
Nils M Holm <n m h @ t 3 x . o r g> -- http://t3x.org/nmh/
From: Mark Tarver
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <1168515699.531203.142300@p59g2000hsd.googlegroups.com>
Qi/tk uses the
Nils M Holm wrote:
> The TCL Windowing Shell (wish) provides a nice and portable interface to Tk, which easily > can be (ab?)used to form a protocol layer between your language and Tk. All you need is > two pipes to talk to wish.

Qi/tk uses the same approach as Matthias Lindner's Plopp integration of
Common Lisp with TCL/tk - it runs WISH.  However Qi/tk buffers you from
the syntax of the TCL/tk system by not requiring command strings to be
used in a program.  The whole syntax is wrapped up in a type secure
functional format.

Because the underlying imperative language is seperated from the user
by a barrier of abstraction, it would be possible to port Qi/tk onto
another imperative graphical substrate (be it GTK+ or whatever)
provided that that substrate had the same functionality as TCL/tk i.e.
it supports buttons, menus etc. with the same latitude of choice as
TCL/tk.

However one thing at a time.

Mark
From: Nils M Holm
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <eo5a94$g7k$1@online.de>
In comp.lang.lisp Mark Tarver <··········@ukonline.co.uk> wrote:
> Qi/tk uses the
> Nils M Holm wrote:
> > The TCL Windowing Shell (wish) provides a nice and portable interface
> > to Tk, which easily can be (ab?)used to form a protocol layer between
> > your language and Tk. All you need is two pipes to talk to wish.
> 
> Qi/tk uses the same approach as Matthias Lindner's Plopp integration of
> Common Lisp with TCL/tk - it runs WISH.  However Qi/tk buffers you from
> the syntax of the TCL/tk system by not requiring command strings to be
> used in a program.  The whole syntax is wrapped up in a type secure
> functional format.

This is exactly how PS/Tk (shameless plug: http://t3x.org/pstk)
integrates Tk into Scheme. All Tk widgets and commands are wrapped
up in Scheme procedures that communicate with wish. This approach
works pretty well and is certainly less painful than having to go
through a FFI.

-- 
Nils M Holm <n m h @ t 3 x . o r g> -- http://t3x.org/nmh/
From: Ken Tilton
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <Xasph.63$ch2.50@newsfe08.lga>
Nils M Holm wrote:
> In comp.lang.lisp Mark Tarver <··········@ukonline.co.uk> wrote:
> 
>>Qi/tk uses the
>>Nils M Holm wrote:
>>
>>>The TCL Windowing Shell (wish) provides a nice and portable interface
>>>to Tk, which easily can be (ab?)used to form a protocol layer between
>>>your language and Tk. All you need is two pipes to talk to wish.
>>
>>Qi/tk uses the same approach as Matthias Lindner's Plopp integration of
>>Common Lisp with TCL/tk - it runs WISH.  However Qi/tk buffers you from
>>the syntax of the TCL/tk system by not requiring command strings to be
>>used in a program.  The whole syntax is wrapped up in a type secure
>>functional format.
> 
> 
> This is exactly how PS/Tk (shameless plug: http://t3x.org/pstk)
> integrates Tk into Scheme. All Tk widgets and commands are wrapped
> up in Scheme procedures that communicate with wish. This approach
> works pretty well and is certainly less painful than having to go
> through a FFI.
> 

Certainly? I did quite a bit of wish-ing in the first incarnation of 
Celtk (+ Tk Lisp Cells) which was just an extension of LTk. Frank 
Goenninger and I have now switched to wish-less-ness (aside, plz note 
phenomenon of hyphen inertia) so we could use the OpenGL TOGL widget and 
make OpenGL calls via C FFI to that.

FFI is certainly an easier way to get to Tcl/Tk. Much easier. No need to 
get info into/out of strings (often easy, often not) and no need to fake 
callbacks (a total kludge).

Using wish is a quick win for those afraid of the big bad FFI wolf (I 
understand--even I did not do FFI* (with FG) until I needed the Togl 
widget, and I do a /lot/ of FFI), but then it is a lifetime of small 
cuts and, yes, slower performance. That may not be a problem for a GUI, 
but once one realizes that the pain arrow points the other way, going 
slower just insults atop injury.

Quick wins are like that.

kt

* OK, I misread the doc, did not realize I just had to do a few bindings 
to get the ball rolling, then cherry-pick other bindings as needed. I 
think FG blazed this trail. kt


-- 
The Dalai Lama gets the same crap all the time.
   -- Kenny Tilton on c.l.l when accused of immodesty
From: Mark Tarver
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <1168518344.787757.179010@77g2000hsv.googlegroups.com>
Joachim Durchholz wrote:
> Mark Tarver schrieb:
> > Qi/tk joins Qi to TCL/tk to produce type secure graphics.
>
> Just being curious: why did you choose tk over, say, GTK+?
>
> Regards,
> Jo

Here's a quick example of what can be done through Qi/tk (talking
through TCL/tk).

(6+) url
url : (string --> ((widget-options url) --> (list character)))

Give a URL with some options (like timeout) and return the contents of
the page as a list of characters.

Ask for a web page - no special options.

(7+) (url "www.lambdassociates.org/webbook/index.htm" [])
[#\< #\h #\t #\m #\l #\> #\Newline #\Newline #\< #\h #\e #\a #\d #\>
#\Newline  #\< #\m #\e #\t #\a #\Space #\h #\t #\t #\p #\- #\e #\q #\u
#\i #\v #\= #\"  #\C #\o #\n #\t #\e #\n #\t #\- #\T #\y #\p #\e #\"
#\Newline #\c #\o #\n #\t  #\e #\n #\t #\= #\" #\t #\e #\x #\t #\/ #\h
#\t #\m #\l #\; #\Space #\c #\h
 #\a #\r #\s #\e #\t #\= #\i #\s #\o #\- #\8 #\8 #\5 #\9 #\- #\1 #\"
#\>  ....etc. etc.  ]

Rather hard to read - so use a function that tokenises a list of
characters into a list of strings

(8+) read-chars-as-stringlist
read-chars-as-stringlist : ((list character) --> ((character -->
boolean) --> (list string)))

(9+) (define whitespace?
           {character --> boolean}
          #\Space -> true
          #\Newline -> true
          #\Tab -> true
          _ -> false)
whitespace? : (character --> boolean)

Now define your web page reader.

(10+) (define read-web-page-as-strings
          {string --> [string]}
           URL -> (read-chars-as-stringlist (url URL []) whitespace?))
read-web-page-as-strings : (string --> (list string))

(11+) (read-web-page-as-strings
"www.lambdassociates.org/webbook/index.htm")
["<html>" "<head>" "<meta" "http-equiv=\"Content-Type\""
"content=\"text/html;" "charset=iso-8859-1\">" "<meta"
"name=\"GENERATOR\"" "content=\"Microsoft" "FrontPage" "Express"
"2.0\">" "<title>Copyright" "Notice</title>" "</head>" "<body"
"bgcolor=\"#000000\"" "text=\"#FFFFFF\"" "link=\"#00FFFF\""
"vlink=\"#00FFFF\"" "alink=\"#00FFFF\">" "<table" "border=\"0\""
"width=\"100%\">" "<tr>" "<td><img" "src=\"../lbest.jpg\""
"width=\"193\"" "height=\"183\"></td>" "<td><p"
"align=\"center\"><font" "size=\"5"" "face=\"Verdana\">Copyright"
"Notice</font></p>" "</td>" "</tr>" "<tr>" "<td" "colspan=\"2\"><hr>"
"</td>" "</tr>" "</table>" "<p" "align=\"left\"><font"
 "face=\"Verdana\">The" "following" "copyright" "applies" "to"
"&quot;Functional" "Programming" "in" "</font><font"
"size=\"5\"><em>Qi</em></font><font" "face=\"Verdana\">&quot;" "and"
"is"
 "written" "into" "the" "text.</font></p>" "<p" "align=\"left\"><font"
"face=\"Verdana\"><strong>All" "right" "reserved." "No" "part" "of"
"this" "book" "covered" "by" "the" "copyright" "hereon" "may" "be"
"reproduced" "or" "used" "in" "any" "form" "or" "by" "any"
"means-graphic," "electronic," "or" "mechanical," "including"
"photocopying," "recording," "taping," "or"
 "information" "storage" "and" "retrieval" "system" "for" "money" "-
"without" "permission" "of" "the" "author." "</strong></font></p>" "<p"
"align=\"left\"><font" "face=\"Verdana\">This" "means" "you" "are"
"free" "to" "print" "off" "or" "make" "electronic" "copies" "of" "this"
"text" "at" "your" "expense," "but" "you" "cannot" "sell" "them" "for"
"money" "unless" "by" "my"
 "permission.</font></p>" "<p" "align=\"left\"><a"
"href=\"contents.htm\"><font" "face=\"Verdana\"><img"
"src=\"goto.gif\"" "border=\"0\"" "width=\"40\""
"height=\"38\"></font></a><font" "face=\"Verdana\">" "<strong>Forward"
"to" "the" "Contents" "Page</strong></font></p>" "<p><font"
"size=\"2\"" "face=\"Verdana\">Copyright" "(c)" "2005," "Mark"
"Tarver<br>" "</font><a"
·························@ukonline.co.uk\"><font" "size=\"2""
"face=\"Verdana\">··········@ukonline.co.uk</font></a></p>" "</body>"
"</html>" ""] : (list string)
From: Paul Rubin
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU Lisp
Date: 
Message-ID: <7x64ayoyhs.fsf@ruckus.brouhaha.com>
"Mark Tarver" <··········@ukonline.co.uk> writes:
> This release has been delayed for a year since its intended date in
> late 2005.   I actually even built a working Linux version of Qi at
> Newcastle Uni. late that year.  But in October 2005 I contracted a
> blood infection that became systemic and affected the lungs.  This
> pretty much brought Qi development to a halt for most of 2006.
> Despite visits to Harley Street, this infection proved resistant to
> Western antibiotics and it was only after a trip to an Ayurvedic clinic
> in India, that the condition started to improve.   I am now nearly
> returned to health and things will move much faster from this point.
> 
> In two weeks I am returning to India in a much better state to visit
> the same clinic to deepen my studies into Eastern medicine, tantra and
> yogic practice and merge them with my understanding of Taoist practice.

I didn't notice this earlier.  Best wishes for a full and quick
recovery, and I hope you return to programming when you feel ready.
From: joe nada
Subject: Re: Announce: Qi 7.2 available for CLisp (Linux & Windows) and CMU 	Lisp
Date: 
Message-ID: <20070123031720937-0200@news.athenanews.com>
In <·······················@k58g2000hse.googlegroups.com> Mark Tarver 
wrote:
> In two weeks I am returning to India in a much better state to visit
> the same clinic to deepen my studies into Eastern medicine, tantra and
> yogic practice and merge them with my understanding of Taoist practice.
> 

We just lost you to oblivion.
We sure will miss Qi.