David Van Horn | 1 Aug 23:47 2014

ICFP 2014 Final Call for Participation

[ Early registration ends 3 Aug; Invited speakers and conference program have been announced. ] ===================================================================== Final Call for Participation ICFP 2014 19th ACM SIGPLAN International Conference on Functional Programming and affiliated events August 31 - September 6, 2014 Gothenburg, Swedenhttp://icfpconference.org/icfp2014/ ===================================================================== ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. The conference covers the entire spectrum of work, from practice to theory, including its peripheries. A full week dedicated to functional programming: 1 conference, 1 symposium, 10 workshops, tutorials, programming contest results, student research competition * Program: http://icfpconference.org/icfp2014/program.html * Accepted Papers: http://icfpconference.org/icfp2014/accepted.html * Local arrangements (including travel and accommodation): http://icfpconference.org/icfp2014/local.html * Registration is available via: https://regmaster4.com/2014conf/ICFP14/register.php Early registration is due 3 August, 2014. * Programming contest, 25-28 July, 2014: http://icfpcontest.org/ * Follow <at> icfp_conference on twitter for the latest news: http://twitter.com/#!/icfp_conference Keynote speakers: * Kathleen Fisher (Tufts University): Using Formal Methods to Enable More Secure Vehicles: DARPA's HACMS Program * Robert Bruce Findler (Northwestern University): Behavioral Software Contracts * Stephanie Weirich (University of Pennsylvania): Depending on Types There are several events affiliated with ICFP: Sunday, August 31 ACM SIGPLAN Workshop on Generic Programming ACM SIGPLAN Workshop on Higher-order Programming with Effects Monday, September 1 – Wednesday, September 3 ICFP Thursday, September 4 ACM SIGPLAN Commercial Users of Functional Programming: Day 1, Tutorials ACM SIGPLAN Haskell Symposium: Day 1 ACM SIGPLAN Workshop on Functional High-Performance Computing ACM SIGPLAN ML Family Workshop Friday, September 5 ACM SIGPLAN Commercial Users of Functional Programming: Day 2, Tutorials ACM SIGPLAN Haskell Symposium: Day 2 ACM SIGPLAN OCaml Workshop ACM SIGPLAN Erlang Workshop Saturday, September 6 ACM SIGPLAN Commercial Users of Functional Programming: Day 3, Talks ACM SIGPLAN Haskell Implementors Workshop ACM SIGPLAN Workshop on Functional Art, Music, Modeling and Design Conference Organizers General Chair: Johan Jeuring, Utrecht University Program Chair: Manuel Chakravarty, University of New South Wales Local Arrangements Chair: Björn von Sydow, Chalmers University Industrial Relations Chair: Anil Madhavapeddy, University of Cambridge Workshop Co-Chairs: Tom Schrijvers, Ghent University Sam Tobin-Hochstadt, Indiana University Programming Contest Co-Chairs: Duncan Coutts, Well Typed LLP Nicolas Wu, University of Oxford Student Research Competition Chair: Meng Wang, Chalmers University Publicity Chair: David Van Horn, University of Maryland Video Chair: Iavor Diatchki, Galois Malcolm Wallace, Standard Chartered Bank Industrial partners: Platinum partners Jane Street Capital Gold partners Google Microsoft Research Mozilla Oracle Labs Standard Chartered Bank Silver partners Bloomberg Credit Suisse CyberPoint Erlang Solutions Facebook Galois Klarna Lexifi Twitter Bronze partners Alephcloud IntelliFactory Opera Software QuviQ Systeor Vest AS =====================================================================
Chicken-users mailing list
Chicken-users <at> nongnu.org
Caolan McMahon | 27 Jul 13:34 2014

New leveldb eggs

I published leveldb bindings a while ago. It turns out the
implementation had some issues with mangled keys in some
circumstances. I've now fixed these issues and created some additional
eggs to compliment leveldb. The new eggs are as follows:

level - provides the leveldb interface (put/get etc)

leveldb - an implementation of the 'level' api, using libleveldb to store data

sublevel - an implementation of the 'level' api which provides
namespaced access to another implementation

I'm hoping to write (or encourage someone else to write) a memory-only
implementation of the 'level' API, which would be useful for testing
or other circumstances where you want to use a module written to the
'level' interface without persisting data.

A small backwards compatibility note on the `level` API - the
`db-stream` procedure now returns a lazy-seq instead of requiring a
thunk which accepts a lazy-seq. It uses set-finalizer! to clean up the
iterator after you've finished with the lazy sequence.

If someone could add the new `level` and `sublevel` eggs to the egg
index that would be great!


Caolan McMahon | 27 Jul 12:54 2014

fnmatch egg

I've just written some bindings to fnmatch(3), which provides
shell-style wildcard pattern matching for filenames. Much like `glob`
from the posix module, only it matches two strings, returning a
boolean rather than descending directories and returning a list of
matching filenames.


This is fairly trivial, but doesn't appear to be available anywhere
else on the egg index. If someone could add it I'd appreciate it.


Matt Gushee | 27 Jul 02:42 2014

Using epsilon in test egg

Hi, folks--

I am working on an application that does a lot of floating-point
calculations, and I'm having trouble with the test suite. The program
is based on the imlib2 egg, and it does some fairly simple image
processing for web applications, so the numbers in question are RGBA
color values. Internally I am handling all the numbers as floats in
the range 0-1, because the blending and compositing formulas are much
more straightforward that way compared to using integers 0-255.

So I have a number of functions that produce lists of numbers like these:

  '(0.323 0.788834 0.12 0.4)
  '(0 0 0 1.0)
  '(0.6666666667 0.4 0.562 0.0)

And given the above, a moderate degree of imprecision in the results
is perfectly acceptable - I haven't yet confirmed this with actual
images, but I'm thinking as much as 0.5% variance should work fine
(basically, as long as the colors in the generated images look as
expected to a casual observer, the result should be acceptable). So of
course I want the test results to reflect this.

I am using the following procedure to compare number lists:

  (define (list= l1 l2)
  (and (= (length l1) (length l2))
       (let loop ((l1* l1) (l2* l2))
           ((null? l1*) #t)
           ((= (car l1*) (car l2*)) (loop (cdr l1*) (cdr l2*)))
           (else #f)))))

And for the tests that use this predicate, I set

  (current-test-epsilon 0.005)

[or 0.002 or 0.001 - it doesn't seem to make any difference]

But I'm finding that certain tests still fail unexpectedly, e.g.

 2.03.10: (parse-color "167,215,51" #f) => '(0.655 0.843 0.200 1.0)  [ FAIL]
          expected (0.655 0.843 0.2 1.0)
          but got (0.654901960784314   0.843137254901961 0.2 1.0)


  (/ 0.654901960784314 0.655) => 0.999850321808113
  (/ 0.843137254901961 0.843) => 1.0001628172028

So it would appear that the epsilon value does not apply to these tests.

I can certainly define a custom equality predicate that will do what I
need, but this is bugging me. I guess I don't really understand how
epsilon is supposed to work. The test egg documentation says that
applies to 'inexact comparisons', but I can't find a definition of
'inexact comparison'. I have also read that '=' may be unreliable for
inexact numbers, but I don't know what else to use. Perhaps 'fp=' from
the Chicken library? Then I would have to ensure that all numbers are
expressed as floats, whereas currently my code has a number of cases
where 1 and 0 are expressed as integers.

So ... do I understand the problem correctly? Any recommendations?

Matt Gushee
Nathaniel Rudavsky-Brody | 25 Jul 20:54 2014

sxml and more


Since this is my first post, let me say how happy I've been since I discovered Chicken: thanks everyone for creating such a well-thought-out environment.

I've got a general question about the sxml tools. I've been using the top-level functions for a while now, for tasks I could do in XSLT, but prefer doing in Scheme. I've always found the lower-level interface(s) a bit intimidating. 

But recently I got stuck on the lack of namespaces in sxml-modify, and started wondering if it would be possible to rewrite it, and then... well more generally, whether it's worth learning how to use the low-level tools, and what I could do with them. Or are pre-post-order and sxpath and sxml-path as good as it gets, for an average user like me? When I search around the web, I can't seem to find examples of more advanced uses of the tools (or at least, well-documented ones...).

Many thanks for your thoughts,


Caractères mobiles
production ebook artisanale
+32 (0) 485 136 458
Chicken-users mailing list
Chicken-users <at> nongnu.org
Matt Welland | 23 Jul 21:41 2014

How to catch an error when http-client can't connect?

I'd like to handle the case where http-client gets denied a connection. I wrapped the call to with-input-from-request with a handle-exceptions but that doesn't catch the error.

Thanks in advance for a pointer in the right direction.

Warning (#<thread: with-input-from-request>): in thread: (tcp-connect) cannot create socket - Connection refused

        Call history:

        http-client.scm:190: uri-common#uri-port         
        http-client.scm:190: tcp-connect         
        http-client.scm:506: k882        
        http-client.scm:506: g886        
        http-client.scm:605: intarweb#request-uri        
        http-client.scm:605: close-connection!   
        http-client.scm:160: ensure-local-connections    
        http-client.scm:128: connections-owner   
        http-client.scm:163: connections         
        http-client.scm:163: hash-table-ref/default      
        http-client.scm:606: max-retry-attempts  
        http-client.scm:607: max-retry-attempts  
        http-client.scm:608: retry-request?      
        http-client.scm:606: g904        
        http-client.scm:610: raise              <--

90% of the nations wealth is held by 2% of the people. Bummer to be in the majority...
Chicken-users mailing list
Chicken-users <at> nongnu.org
Evan Hanson | 19 Jul 06:45 2014

[ANN] R7RS support egg

Hi all,

An egg providing support for most of the R7RS Scheme language has been
released for testing. It can be installed in the usual way, via

It's still early days and doesn't cover the full specification yet, but
it should be good enough for many R7RS programs so any testing you can
provide is appreciated. If you do decide to try it out, please refer to
the egg's wiki page for a list of known issues and caveats:


Bug reports are more than welcome. Also, thanks to Seth Alves for lots
of early testing.


Chicken-users mailing list
Chicken-users <at> nongnu.org
Jason Hemann | 16 Jul 21:06 2014

[Call for Papers] 2014 Scheme and Functional Programming Workshop

[Apologies for duplication from cross-postings.]

DEADLINE: 5 September 2014, (23:59 UTC-12)
WEBSITE: http://homes.soic.indiana.edu/jhemann/scheme-14/
LOCATION: Washington, DC (co-located with Clojure/conj)
DATE: 19 November 2014

The 2014 Scheme and Functional Programming Workshop is calling for

Submissions related to Scheme and functional programming are welcome
and encouraged. Topics of interest include but are not limited to:

- Program-development environments, debugging, testing
- Implementation (interpreters, compilers, tools, benchmarks, etc)
- Syntax, macros, and hygiene
- Distributed computing, concurrency, parallelism
- Interoperability with other languages, FFIs
- Continuations, modules, object systems, types
- Theory, formal semantics, correctness
- History, evolution and standardization of Scheme
- Applications, experience and industrial uses of Scheme
- Education
- Scheme pearls (elegant, instructive uses of Scheme)

We also welcome papers related to dynamic or multiparadigmatic
languages and programming techniques.

Full papers are due 5 September 2014.
Authors will be notified by 10 October 2014.
Camera-ready versions are due 24 Oct 2014.
All deadlines are (23:59 UTC-12), "Anywhere on Earth".

For more information, please see:



Jason Hemann,
Organizer, Scheme 14
Christopher Collins | 12 Jul 20:09 2014

Determine if program has been compiled

Hello chicken users,

Is there a way to determine, in code, whether a chicken program has been
compiled?  I am thinking of something similar to:

        (chicken-script ... )

...but with an identifer different from "chicken-script".

It is possible that I'm asking the wrong question.  My underlying
problem is: I want my program to behave one way when I load it from
within csi, and another way when I either execute it with "csi -script"
or compile it and execute the binary.  In particular, to make debugging
easier, I want to skip command line parsing when I load the code in csi.
The cond-expand,chicken-script form lets me determine when the program
was run with "csi -script".  However, it does not solve the
compile-and-run scenario; the resulting executable behaves as though it
were loaded into csi.

Thank you,
Chicken-users mailing list
Chicken-users <at> nongnu.org
Michele La Monaca | 12 Jul 11:40 2014

csc and standard input

Hi all,

I think it would be useful if csc were able to work directly from the
standard input (e.g. in case of no source files). For example:

csc -o quick_test
[paste code]


cat f.scm | preprocessor | csc

On most Unixes you can obtain the result with /dev/stdin, but it
doesn't seem a standard mandated requirement:


and of course it isn't applicable to Windows (mingw). So I would
favour an explicit support for stdin in csc.

Michele La Monaca | 11 Jul 11:15 2014

compilation warning


I get this annoying warning when defining a "count" variable at the toplevel:

echo '(define count 1)' | csc -to-stdout /dev/stdin > /dev/null

Warning: at toplevel:
  assignment of value of type `fixnum' to toplevel variable `count'
does not match declared type `(forall (a109) (procedure count
((procedure (a109 #!rest *) *) (list-of a109) #!rest list) fixnum))'