John Sampson | 20 Dec 13:58 2014

ActiveX dll files in Windows

Is it possible to call procedures or functions in a third-party ActiveX 
dll in Microsoft Windows from a Chicken Scheme program?

If so, how would this be done?


John Sampson
Răzvan Rotaru | 20 Dec 13:34 2014

multiple mingw installations on windows


On windows, then chicken compiler uses the gcc which is found in PATH. This causes problems when there are multiple mingw installations on a machine (or multiple gcc bundled with various software).

Is there a way to tell the chicken compiler which gcc to use? I am looking for an environment variable to do this, something in the spirit of CHICKEN_PREFIX, or some other configuration, not a chicken build option like C_COMPILER. I need it when installing chicken as a binary.

Chicken-users mailing list
Chicken-users <at>
Alexej Magura | 20 Dec 07:38 2014

testing if a symbol has been interned

In Common Lisp, clisp specifically, you can test whether a symbol has been bound, that is interned, or not using boundp; is there a way to do this in Chicken?

(boundp 'a) ; nil
(defvar a 1)
(boundp 'a) ; t

I wrote up a function once a while back that used exception handling to check if a symbol had been defined, but if there's already an egg that provides this support or if it's built-in, I wanted to know so that I wouldn't have to bother trying to rewrite said function.
-- Alexej Magura
Chicken-users mailing list
Chicken-users <at>
Peter Achten | 19 Dec 17:48 2014

[TFP 2015] 1st call for papers

                         C A L L   F O R   P A P E R S

                         ======== TFP 2015 ===========

               16th Symposium on Trends in Functional Programming
                                June 3-5, 2015
                        Inria Sophia Antipolis, France

The symposium on Trends in Functional Programming (TFP) is an
international forum for researchers with interests in all aspects of
functional programming, taking a broad view of current and future
trends in the area. It aspires to be a lively environment for
presenting the latest research results, and other contributions (see
below). Authors of draft papers will be invited to submit revised
papers based on the feedback receive at the symposium.  A
post-symposium refereeing process will then select a subset of these
articles for formal publication.

The selected revised papers are expected to be published as a Springer
Lecture Notes in Computer Science (LNCS) volume.

TFP 2015 will be the main event of a pair of functional programming
events. TFP 2015 will be accompanied by the International Workshop on
Trends in Functional Programming in Education (TFPIE), which will take
place on June 2nd.

The TFP symposium is the heir of the successful series of Scottish
Functional Programming Workshops. Previous TFP symposia were held in
   * Edinburgh (Scotland) in 2003;
   * Munich (Germany) in 2004;
   * Tallinn (Estonia) in 2005;
   * Nottingham (UK) in 2006;
   * New York (USA) in 2007;
   * Nijmegen (The Netherlands) in 2008;
   * Komarno (Slovakia) in 2009;
   * Oklahoma (USA) in 2010;
   * Madrid (Spain) in 2011;
   * St. Andrews (UK) in 2012;
   * Provo (Utah, USA) in 2013;
   * and in Soesterberg (The Netherlands) in 2014.
For further general information about TFP please see the TFP homepage.


TFP is pleased to announce talks by the following two invited speakers:

   * Laurence Rideau is a researcher at INRIA and is interested in the
     semantics of programming languages , the formal methods, and the
     verification tools for programs and mathematical proofs.  She
     participated in the beginnings of the Compcert project (certified
     compiler), and is part of the Component Mathematical team in the
     MSR-INRIA joint laboratory, who performed the formalization of the
     Feit-Thompson theorem successfully.

     Thirty years ago, computers barged in mathematics with the famous
     proof of the Four Color Theorem.  Initially limited to simple
     calculation, their role is now expanding to the reasoning whose
     complexity is beyond the capabilities of most humans, as the proof of
     the classification of finite simple groups.  We present our large
     collaborative adventure around the formalization of the Feit-Thompson
     theorem (
     that is a first step to the classification of finite groups
     and that uses a palette of methods and techniques that range from
     formal logic to software (and mathematics) engineering.

   * Sam Aaron (?)

== SCOPE ==

The symposium recognizes that new trends may arise through various
routes.  As part of the Symposium's focus on trends we therefore
identify the following five article categories. High-quality articles
are solicited in any of these categories:

     Research Articles: leading-edge, previously unpublished research work
     Position Articles: on what new trends should or should not be
     Project Articles: descriptions of recently started new projects
     Evaluation Articles: what lessons can be drawn from a finished project
     Overview Articles: summarizing work with respect to a trendy subject

Articles must be original and not simultaneously submitted for
publication to any other forum. They may consider any aspect of
functional programming: theoretical, implementation-oriented, or
experience-oriented.  Applications of functional programming
techniques to other languages are also within the scope of the

Topics suitable for the symposium include:

     Functional programming and multicore/manycore computing
     Functional programming in the cloud
     High performance functional computing
     Extra-functional (behavioural) properties of functional programs
     Dependently typed functional programming
     Validation and verification of functional programs
     Debugging and profiling for functional languages
     Functional programming in different application areas:
       security, mobility, telecommunications applications, embedded 
       global computing, grids, etc.
     Interoperability with imperative programming languages
     Novel memory management techniques
     Program analysis and transformation techniques
     Empirical performance studies
     Abstract/virtual machines and compilers for functional languages
     (Embedded) domain specific languages
     New implementation strategies
     Any new emerging trend in the functional programming area

If you are in doubt on whether your article is within the scope of
TFP, please contact the TFP 2015 program chair, Manuel Serrano.


To reward excellent contributions, TFP awards a prize for the best paper
accepted for the formal proceedings.

TFP traditionally pays special attention to research students,
acknowledging that students are almost by definition part of new
subject trends. A student paper is one for which the authors state
that the paper is mainly the work of students, the students are listed
as first authors, and a student would present the paper. A prize for
the best student paper is awarded each year.

In both cases, it is the PC of TFP that awards the prize. In case the
best paper happens to be a student paper, that paper will then receive
both prizes.


TFP is financially supported by ??????????????????


Acceptance of articles for presentation at the symposium is based on a
lightweight peer review process of extended abstracts (4 to 10 pages
in length) or full papers (20 pages). The submission must clearly
indicate which category it belongs to: research, position, project,
evaluation, or overview paper. It should also indicate which authors
are research students, and whether the main author(s) are students.  A
draft paper for which ALL authors are students will receive additional
feedback by one of the PC members shortly after the symposium has
taken place.

We use EasyChair for the refereeing process. Papers must be submitted at:

Papers must be written in English, and written using the LNCS
style. For more information about formatting please consult the
Springer LNCS web site:


Submission of draft papers:     March 17, 2015
Notification:                   March 24, 2015
Registration:                   April 7, 2015
TFP Symposium:                  June 3-5, 2015
Student papers feedback:        June 9, 2015
Submission for formal review:   July 1, 2015
Notification of acceptance:     September 8, 2015
Camera ready paper:             October 8, 2015


Janis Voigtländer               University of Bonn, DE
Scott Owens                     University of Kent, UK
Neil Sculthorpe                 Swansea University, UK
Colin Runciman                  University of York, UK
Manuel Serrano                  Inria (PC chair), FR
Rinus Plasmeijer                University of Nijmegen, NL
Tomas Petricek                  University of Cambridge, UK
Marco T. Morazan                Seton Hall University, USA
Wolfgang De Meuter              Vrije Universiteit Brussel, BE
Michel Mauny                    Ensta ParisTech, FR
Sam Lindley                     The University of Edinburgh, UK
Daan Leijen                     Microsoft, USA
Jurriaan Hage                   Utrecht University, NL
Andy Gill                       University of Kansas, USA
Thomas Gazagnaire               University of Cambrige, UK
Lars-Ake Fredlund               Universidad Politécnica de Madrid, ES
Jean-Christophe Filliatre       Université Paris Sud Orsay, FR
Marc Feeley                     Université de Montréal, CA
Olaf Chitil                     University of Kent, UK
Edwin Brady                     University of St Andrews, UK

Chicken-users mailing list
Chicken-users <at>
Sascha Ziemann | 19 Dec 14:42 2014

How to tell csc to call main?


How to tell csc to call main in the same way like "csi -ss"?

$ cat distribution.scm
#! /usr/bin/csi -ss

(define (main args)
        (display "main\n"))
$ ./distribution.scm
$ csc distribution.scm
$ ./distribution

csc does not seem to have a -ss option.


Chicken-users mailing list
Chicken-users <at>
Johan Jeuring | 18 Dec 08:48 2014


      Trends in Functional Programming in Education (TFPIE 2015)
                          Call for papers

The 4th International Workshop on Trends in Functional Programming in Education,
TFPIE 2015, will be held on June 2, 2015 in Sophia-Antipolis in France. It is
co-located with the Symposium on Trends in Functional Programming (TFP 2015)
which takes place from June 3 - 5.

*** Goal ***

The goal of TFPIE is to gather researchers, teachers and professionals that use,
or are interested in the use of, functional programming in education. TFPIE aims
to be a venue where novel ideas, classroom-tested ideas and work-in-progress on
the use of functional programming in education are discussed. The one-day
workshop will foster a spirit of open discussion by having a review process for
publication after the workshop. The program chair of TFPIE 2015 will screen
submissions to ensure that all presentations are within scope and are of
interest to participants. Potential presenters are invited to submit an extended
abstract (4-6 pages) or a draft paper (up to 16 pages) in EPTCS style. The
authors of accepted presentations will have their preprints and their slides
made available on the workshop's website/wiki. Visitors to the TFPIE 2015
website/wiki will be able to add comments. This includes presenters who may
respond to comments and questions as well as provide pointers to improvements
and follow-up work. After the workshop, presenters will be invited to submit (a
revised version of) their article for review. The PC will select the best
articles for publication in the journal Electronic Proceedings in Theoretical
Computer Science (EPTCS). Articles rejected for presentation and extended
abstracts will not be formally reviewed by the PC. TFPIE workshops have
previously been held in St Andrews, Scotland (2012), Provo Utah, USA (2013), and
Soesterberg, The Netherlands (2014). 

*** Program Committee ***

Peter Achten, Radboud University Nijmegen, The Netherlands
Edwin Brady, University of St Andrews, UK
Johan Jeuring, Utrecht University and Open University, The Netherlands (Chair)
Shriram Krishnamurthi, Brown University, US
Rita Loogen, Philipps-Universität Marburg, Germany
Marco Morazan, Seton Hall University, US
Norman Ramsey, Tufts University, US

*** Submission Guidelines ***

TFPIE 2015 welcomes submissions describing techniques used in the classroom,
tools used in and/or developed for the classroom and any creative use of
functional programming (FP) to aid education in or outside Computer Science.
Topics of interest include, but are not limited to:

- FP and beginning CS students 
- FP and Computational Thinking 
- FP and Artificial Intelligence 
- FP in Robotics 
- FP and Music 
- Advanced FP for undergraduates 
- Tools supporting learning FP 
- FP in graduate education 
- Engaging students in research using FP 
- FP in Programming Languages 
- FP in the high school curriculum 
- FP as a stepping stone to other CS topics 
- FP and Philosophy 

*** Best Lectures ***

In addition to papers, we request “best lecture” presentations. What is your
best lecture topic in an FP related course? Do you have a fun way to present FP
concepts to novices or perhaps an especially interesting presentation of a
difficult topic? In either case, please consider sharing it. Best lecture topics
will be selected for presentation based on a short abstract describing the
lecture and its interest to TFPIE attendees.

*** Submission ***

Papers and abstracts can be submitted via easychair at the following link:
It is expected at at least one author for each submitted paper will attend the

*** Important Dates ***

April 7, 2015: Early Registration for TFP closes
April 27, 2015: Submission deadline for draft TFPIE papers and abstracts
May 3 2015: Notification of acceptance for presentation
?? (Probably May 22 2015): Registration for TFPIE closes - as does late registration for TFP
June 2, 2015: Presentations in Sophia-Antipolis, France
July 7, 2015: Full papers for EPTCS proceedings due.
September 1, 2015: Notification of acceptance for proceedings
September 22, 2015: Camera ready copy due for EPTCS

Submission of an abstract implies no obligation to submit a full version;
abstracts with no corresponding full versions by the full paper deadline will be
considered as withdrawn.
Alexej Magura | 17 Dec 08:44 2014

updating eggs

Is there a way to update eggs?  I thought it might be chicken-install -update-db but that seems to have a different effect.  Is there no zero-config means of updating eggs aside from manually updating them?
-- Alexej Magura
Chicken-users mailing list
Chicken-users <at>
Bahman Movaqar | 17 Dec 09:34 2014

Why there is no "nil"?

I'm curious to know why "nil" is not defined in CHICKEN and one has to use '() instead? TIA,

PS: Or am I missing something ridiculously obvious!?
-- Bahman Movaqar - - PGP Key ID: 0x6AB5BD68 (
Chicken-users mailing list
Chicken-users <at>
Bahman Movaqar | 16 Dec 22:57 2014

What does (let X ...) do?

Reading on "lazy-seq" [1]; what exactly does the following piece of code do?

    (let foo ((x 10))
      (* x x))




Bahman Movaqar - -
PGP Key ID: 0x6AB5BD68 (

Chicken-users mailing list
Chicken-users <at>
mfv | 15 Dec 18:30 2014

Error: chicken-install awful [Win7-64, chicken]


I failed to install awful today. After some tinkering and consulting with
folks from #chicken, I decided to put it up on the mailing list. 

This is what I got. Any ideas? 



[Windows 7 64 bit]

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

(c) 2008-2014, The Chicken Team
(c) 2000-2007, Felix L. Winkelmann
Version (stability/4.9.0) (rev 8b3189b)
windows-mingw32-x86 [ manyargs dload ptables ]
bootstrapped 2014-06-07

#;1> (exit)

C:\Users\wuschel>chicken-install awful
retrieving ...
connecting to host "", port 80 ...
requesting "/henrietta.cgi?name=awful&mode=default" ...
reading response ...
HTTP/1.1 200 OK
Date: Mon, 15 Dec 2014 17:24:18 GMT
Server: Apache/2.2.29 (Unix) DAV/2 SVN/1.8.10 PHP/5.4.32 mod_fastcgi/2.4.6
Connection: close
Transfer-Encoding: chunked
Content-Type: text/plain
reading chunks ..
reading files ...
 awful located at C:\Users\wuschel\AppData\Local\Temp/tempa8e2.4720/awful
checking platform for `awful' ...
checking dependencies for `awful' ...
install order:
installing awful:0.41.0 ...
changing current directory to
  "C:\Chicken\bin\csi" -bnq -setup-mode -e "(require-library setup-api)" -e
port setup-api)" -e "(setup-error-handling)" -e "(extension-name-and-version
"awful\" \"0.41.0\"))" "awful.setup"
  "C:\Chicken\bin\csc" -feature compiling-extension -setup-mode    -s -O3
-d1 -j
 awful awful.scm
  "C:\Chicken\bin\csc" -feature compiling-extension -setup-mode    -s -O3
-d1 aw
  "C:\Chicken\bin\csc" -feature compiling-extension -setup-mode    -O3 -d1
-server.scm -o awful
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/lib/crt2.o: In
n `_mingw_setargv':
/src/libcrt/crt/init.c:241: undefined reference to `__mingw_glob'
/src/libcrt/crt/init.c:214: undefined reference to `__mingw_glob'
collect2.exe: error: ld returned 1 exit status

Error: shell command terminated with non-zero exit status 1: ""gcc"
"awful.o" -o
 "awful" -Wl,--enable-auto-import -L"C:\Chicken/lib/" -lchicken -lm

Error: shell command failed with nonzero exit status 1:

  "C:\Chicken\bin\csc" -feature compiling-extension -setup-mode    -O3 -d1
-server.scm -o awful

Error: shell command terminated with nonzero exit code
"\"C:\\Chicken\\bin\\csi\" -bnq -setup-mode -e \"(require-library
setup-api)\" -
Alexej Magura | 15 Dec 12:00 2014

readline egg v2.0 feedback

Hi, so as the new maintainer for the readline egg I wanted to reach out to the community and see if anybody had any hacks that they'd like to see included in the egg or if any old maintainers have uncommitted code? 

Also if you'd like to see a feature get implemented/added to the egg, please let me know.

Here's a list of the changes that will most likely be appearing (most of them are ready to go and will be available in the egg's trunk as soon as I get my repo creds working) in the next release.  If y'all would please read the changes and provide whatever feedback you feel like giving, I'd really appreciate it.

Version 2.0 Changes
  • module's exports use slightly different names: breaking compatibility with code relying on the previous release of the egg.
    • solution: legacy bindings?
  • better paren-bouncing: previous version did it from scratch; version 2.0 uses readline's built-in parenthesis bouncing abilities. 
    • Works with brackets (i.e. [ ] ) too.
  • A bunch of new functions:
    • (add-history STRING)
      • does what it sounds like.  Adds a string to current history-list.
    • (add-history-time STRING)
      • changes the timestamp associated with the most recent entry in history-list.
    • (history-entry-time OFFSET)
      • returns the timestamp (a c-string) for the entry at the specified offset in history-list
      • if there isn't a timestamp for the entry at offset or there isn't an entry there at all, the function returns #f.
    • (history-current-entry-line)
      • returns the line (a c-string) for the current entry in history-list.
    • (history-current-entry-time)
      • returns the timestamp for the current entry in history-list.
    • (history-goto-entry OFFSET #!optional RELATIVE)
      • returns a list consisting of '(line: STRING index: INTEGER)
      • if #t or an exp evaluating to #t is passed as RELATIVE, then OFFSET is relative to the current entry in history list.
    • (search-history STRING DIRECTION)
      • returns a list consisting of '(offset: OFFSET match: STRING index: POSITION) on match and #f on fail.
      • if direction is 0+ then it searches through subsequent entries
      • if direction is <0 then it searches through previous entries
    • (search-history-backward STRING)
      • binds to (search-history STRING -1)
    • (search-history-forward STRING)
      • binds to (search-history STRING 0)
    • (history-list-length)
      • returns the length of the history-list
    • (history-list)
      • returns the each history-list entry's `line' field as a list split on the newline.
    • (history-position #!optional POSITION)
      • returns the current position in history-list.
      • if POSITION is supplied, then it sets the current position in history-list.
Things I'd like to add sometime in the next release or two
  • paren highlighting.  The matching paren/brace for the currently selected one gets highlighted.  (Cool, Neato! :D)
    • if a paren/brace has no matching paren/brace, then it gets highlighted a different color.

Thank you for your feedback and merry Christmas!

-- Alexej Magura
Chicken-users mailing list
Chicken-users <at>