Re: [racket-dev] What is the policy on what is included in the core libraries?

2015-02-17 Thread Jens Axel Søgaard
2015-02-17 14:26 GMT+01:00 Robby Findler :
> I don't think the libraries are sufficient as is, but I would resist
> adding aliases.

A alternative: Added the word  zip  to the documentation index,
link it to map and have an example where in (map list ...) is used.

Also: Isn't zip in srfi/1 ?

/Jens Axel

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-dev+unsubscr...@googlegroups.com.
To post to this group, send email to racket-...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/CABefVgz2g3svHzxg55Y11DWi%3DAKqm21YRvu777owxi4p_tqNNg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


[racket-dev] Literal constants

2015-01-22 Thread Jens Axel Søgaard
This program returns #f - I was expecting to see #t.

#lang racket
(define a '(1 2 3))
(define b '(1 2 3))
(eq? a b)

Why not guarantee uniqueness of  literals occurring in the same module?

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] git problem during make

2015-01-11 Thread Jens Axel Søgaard
2015-01-11 20:16 GMT+01:00 Matthew Flatt :
> I'm not sure what you have in mind with some of the steps, such as step
> 4 (using `raco pkg` or `raco link`?).

I had forgotten.

> The trace suggests that "gui-lib" is linked as a clone at the `raco
> pkg` level. Using `raco link -r` to adjust links installed by the
> package manager has a difficult-to-predict effect, but it would not
> include unlinking the clone at the `raco pkg` level, so that may be the
> source of the problem.

That's it - it was raco pkg and not raco link I had used.

Thanks,
Jens Axel


>
> At Sun, 11 Jan 2015 20:00:45 +0100, Jens Axel Søgaard wrote:
>> The following problem occurs while running
>>  make CPUS=4
>> in the plt repository.
>>
>>  error: 'merge' is not possible because you have unmerged files.
>>
>> And that's confusing, because git status doesn't report anything.
>>
>> mba-5:plt soegaard$ git status
>> On branch master
>> Your branch is up-to-date with 'origin/master'.
>> Untracked files:
>>   (use "git add ..." to include in what will be committed)
>>
>> The full transcript is below.
>>
>> Here is what I did to get in this state.
>>
>> 1. Updated and built the racket repository
>> 2. Create a new directory ~/clones/ and cloned github.org/racket/gui
>> 3. Added the cloned gui libs to with raco
>> 4. Changed things
>> 5. Built racket with modified gui in clones.
>> 5. Removed the clones  with raco link -r 
>> 6. Updated the repository with git pull
>> 7. Tried make.
>>
>> So there are unmerged files in ~/clones/... but they are no longer linked to.
>>
>> > ~/racket-from-plt-git/plt/racket/bin/raco link -l | grep clone
>> >
>>
>> /Jens Axel
>>
>>
>>
>> mba-5:plt soegaard$ make CPUS=4
>>
>> if [ "4" = "" ] ; \
>>
>>  then make plain-in-place PKGS="main-distribution
>> main-distribution-test" ; \
>>
>>  else make cpus-in-place CPUS="4" PKGS="main-distribution
>> main-distribution-test" ; fi
>>
>> make -j 4 plain-in-place JOB_OPTIONS="-j 4" PKGS="main-distribution
>> main-distribution-test"
>>
>> make base
>>
>> mkdir -p build/config
>>
>> echo '#hash((links-search-files . ()))' > build/config/config.rktd
>>
>> mkdir -p racket/src/build
>>
>> make racket/src/build/Makefile
>>
>> make[4]: `racket/src/build/Makefile' is up to date.
>>
>> cd racket/src/build; make reconfigure
>>
>> make Makefile
>>
>> make[5]: `Makefile' is up to date.
>>
>> cd racket/src/build; make SELF_RACKET_FLAGS="-G `cd ../../../build/config;
>> pwd`"
>>
>> make 3m
>>
>> cd racket; make 3m
>>
>> make cgc
>>
>> make common
>>
>> make g-c
>>
>> cd sgc; make ../libmzgc.a
>>
>> make[10]: `../libmzgc.a' is up to date.
>>
>> make foreign-stuff
>>
>> cd ../foreign; make all
>>
>> make foreign.o
>>
>> make[11]: `foreign.o' is up to date.
>>
>> make libffi_ON
>>
>> make libffi/libffi.la
>>
>> make[12]: `libffi/libffi.la' is up to date.
>>
>> make dynlib
>>
>> cd dynsrc; make dynlib
>>
>> make ../mzdyn.o
>>
>> make[10]: `../mzdyn.o' is up to date.
>>
>> make ../starter
>>
>> make[10]: `../starter' is up to date.
>>
>> make mzlibrary
>>
>> cd src; make all
>>
>> make mzobjects
>>
>> make[10]: Nothing to be done for `mzobjects'.
>>
>> make libracket.a
>>
>> make[9]: `libracket.a' is up to date.
>>
>> make racketcgc
>>
>> make[8]: `racketcgc' is up to date.
>>
>> cd gc2; make all
>>
>> make check-sdep
>>
>> ../racketcgc -G /Users/soegaard/racket-from-plt-git/plt/build/config
>> -cqu ../../../racket/gc2/check-sdep.rkt
>>
>> make xsrc/precomp.h
>>
>> make[8]: `xsrc/precomp.h' is up to date.
>>
>> make xobjects
>>
>> make[8]: Nothing to be done for `xobjects'.
>>
>> make ../racket3m
>>
>> make[8]: `../racket3m' is up to date.
>>
>> cd dynsrc; make dynlib3m
>>
>> make ../mzdyn3m.o
>>
>> make[8]: `../mzdyn3m.o' is up to date.
>>
>> cd gc2; make ../racket3m
>>
>> m

[racket-dev] git problem during make

2015-01-11 Thread Jens Axel Søgaard

git clone /Users/soegaard/clones/git:/github.com/racket/gui/
/var/folders/pr/5jt3l64s02n_zwtw6hr3tcgwgp/T/14210018101421001810726-gui

git fetch /Users/soegaard/clones/git:/github.com/racket/gui/ master

git checkout 60611bc081349662d27e3caa13dcdb193a3eba7c

Using cached14210013731421001373436 for
https://github.com/racket/srfi/tarball/992f0938da0fcf4a762fda2f87c7e51772cd6297

Using cached14210014111421001411263 for
https://github.com/racket/htdp/tarball/2af3d467e2221ead04495e3f5537465af776c48c

Using cached14210014201421001420045 for
https://github.com/racket/plot/tarball/220b279918751b1c8b1a560bb406e3e2fffa7ad1

Using cached14210014261421001426951 for
https://github.com/racket/redex/tarball/fcf9516a1722426fb98965441eac13ef92f84e0f

Using cached14210013731421001373436 for
https://github.com/racket/srfi/tarball/992f0938da0fcf4a762fda2f87c7e51772cd6297

Using cached14210014111421001411263 for
https://github.com/racket/htdp/tarball/2af3d467e2221ead04495e3f5537465af776c48c

Using cached14210014201421001420045 for
https://github.com/racket/plot/tarball/220b279918751b1c8b1a560bb406e3e2fffa7ad1

Using cached14210014341421001434954 for
https://github.com/racket/scribble/tarball/064ccc9bfc7cef5ffd42095f5d21fae95ec7c614

Using cached14210014341421001434954 for
https://github.com/racket/scribble/tarball/064ccc9bfc7cef5ffd42095f5d21fae95ec7c614

Using cached14210014111421001411263 for
https://github.com/racket/htdp/tarball/2af3d467e2221ead04495e3f5537465af776c48c

Using cached14210014201421001420045 for
https://github.com/racket/plot/tarball/220b279918751b1c8b1a560bb406e3e2fffa7ad1

Using cached14210013731421001373436 for
https://github.com/racket/srfi/tarball/992f0938da0fcf4a762fda2f87c7e51772cd6297

Using cached14210014201421001420045 for
https://github.com/racket/plot/tarball/220b279918751b1c8b1a560bb406e3e2fffa7ad1

Using cached14210013731421001373436 for
https://github.com/racket/srfi/tarball/992f0938da0fcf4a762fda2f87c7e51772cd6297

Using cached14210014111421001411263 for
https://github.com/racket/htdp/tarball/2af3d467e2221ead04495e3f5537465af776c48c

Using cached14210014201421001420045 for
https://github.com/racket/plot/tarball/220b279918751b1c8b1a560bb406e3e2fffa7ad1

Using cached14210014201421001420045 for
https://github.com/racket/plot/tarball/220b279918751b1c8b1a560bb406e3e2fffa7ad1

Querying Git references for gui-doc at git://github.com/racket/gui/?path=gui-doc

Fetching from remote repository git://github.com/racket/gui/

git fetch git://github.com/racket/gui/

Cloning repository locally for staging

git clone /Users/soegaard/clones/git:/github.com/racket/gui/
/var/folders/pr/5jt3l64s02n_zwtw6hr3tcgwgp/T/14210018191421001819633-gui-doc

git fetch /Users/soegaard/clones/git:/github.com/racket/gui/ master

git checkout 60611bc081349662d27e3caa13dcdb193a3eba7c

Using cached14210014261421001426951 for
https://github.com/racket/redex/tarball/fcf9516a1722426fb98965441eac13ef92f84e0f

Using cached14210014451421001445875 for
https://github.com/racket/typed-racket/tarball/864b0ad5fca7581e0e7be6501330d9005bf6f07f

Using cached14210014261421001426951 for
https://github.com/racket/redex/tarball/fcf9516a1722426fb98965441eac13ef92f84e0f

Querying Git references for gui-test at
git://github.com/racket/gui/?path=gui-test

Fetching from remote repository git://github.com/racket/gui/

git fetch git://github.com/racket/gui/

Cloning repository locally for staging

git clone /Users/soegaard/clones/git:/github.com/racket/gui/
/var/folders/pr/5jt3l64s02n_zwtw6hr3tcgwgp/T/14210018221421001822608-gui-test

git fetch /Users/soegaard/clones/git:/github.com/racket/gui/ master

git checkout 60611bc081349662d27e3caa13dcdb193a3eba7c

Using cached14210014451421001445875 for
https://github.com/racket/typed-racket/tarball/864b0ad5fca7581e0e7be6501330d9005bf6f07f

Using cached14210014261421001426951 for
https://github.com/racket/redex/tarball/fcf9516a1722426fb98965441eac13ef92f84e0f

Using cached14210014451421001445875 for
https://github.com/racket/typed-racket/tarball/864b0ad5fca7581e0e7be6501330d9005bf6f07f

Using cached14210014261421001426951 for
https://github.com/racket/redex/tarball/fcf9516a1722426fb98965441eac13ef92f84e0f

Using cached14210014451421001445875 for
https://github.com/racket/typed-racket/tarball/864b0ad5fca7581e0e7be6501330d9005bf6f07f

Using cached14210014541421001454105 for
https://github.com/racket/unstable-flonum/tarball/7071d9a3ee0ad60f947c0a597ddd4b64bed3d94a

Querying Git references for gui-lib at git://github.com/racket/gui/?path=gui-lib

Fetching from remote repository git://github.com/racket/gui/

git fetch git://github.com/racket/gui/

Cloning repository locally for staging

git clone /Users/soegaard/clones/git:/github.com/racket/gui/
/var/folders/pr/5jt3l64s02n_zwtw6hr3tcgwgp/T/14210018271421001827194-gui-lib

git fetch /Users/soegaard/clones/git:/github.com/racket/gui/ master

git checkout 60611bc081349662d27e3caa13dcdb193a3eba7c

Using cached14210014451421001445875 for
https://github.com/racket/typed-racket/tarball/864b0ad5fca7581e0e7be6501330d9005bf6f07f

Using cached14210014261421001426951 for
https://github.com/racket/redex/tarball/fcf9516a1722426fb98965441eac13ef92f84e0f

Using cached14210014541421001454105 for
https://github.com/racket/unstable-flonum/tarball/7071d9a3ee0ad60f947c0a597ddd4b64bed3d94a

Using cached14210014341421001434954 for
https://github.com/racket/scribble/tarball/064ccc9bfc7cef5ffd42095f5d21fae95ec7c614

Using cached14210014451421001445875 for
https://github.com/racket/typed-racket/tarball/864b0ad5fca7581e0e7be6501330d9005bf6f07f

Using cached14210014261421001426951 for
https://github.com/racket/redex/tarball/fcf9516a1722426fb98965441eac13ef92f84e0f

Querying Git references for tex-table at
git://github.com/racket/gui/?path=tex-table

Fetching from remote repository git://github.com/racket/gui/

git fetch git://github.com/racket/gui/

Cloning repository locally for staging

git clone /Users/soegaard/clones/git:/github.com/racket/gui/
/var/folders/pr/5jt3l64s02n_zwtw6hr3tcgwgp/T/14210018321421001832103-tex-table

git fetch /Users/soegaard/clones/git:/github.com/racket/gui/ master

git checkout 60611bc081349662d27e3caa13dcdb193a3eba7c

Using cached14210014341421001434954 for
https://github.com/racket/scribble/tarball/064ccc9bfc7cef5ffd42095f5d21fae95ec7c614

Using cached14210014261421001426951 for
https://github.com/racket/redex/tarball/fcf9516a1722426fb98965441eac13ef92f84e0f

Using cached14210014451421001445875 for
https://github.com/racket/typed-racket/tarball/864b0ad5fca7581e0e7be6501330d9005bf6f07f

Using cached14210014341421001434954 for
https://github.com/racket/scribble/tarball/064ccc9bfc7cef5ffd42095f5d21fae95ec7c614

Using cached14210014341421001434954 for
https://github.com/racket/scribble/tarball/064ccc9bfc7cef5ffd42095f5d21fae95ec7c614

Using cached14210013731421001373436 for
https://github.com/racket/srfi/tarball/992f0938da0fcf4a762fda2f87c7e51772cd6297

Merging commits at /Users/soegaard/clones/git:/github.com/racket/gui/

git merge --ff-only 60611bc081349662d27e3caa13dcdb193a3eba7c

error: 'merge' is not possible because you have unmerged files.

hint: Fix them up in the work tree,

hint: and then use 'git add/rm ' as

hint: appropriate to mark resolution and make a commit,

hint: or use 'git commit -a'.

fatal: Exiting because of an unresolved conflict.

raco pkg update: Git command failed

make[2]: *** [plain-in-place] Error 1

make[1]: *** [cpus-in-place] Error 2

make: *** [in-place] Error 2

mba-5:plt soegaard$ git status

On branch master

Your branch is up-to-date with 'origin/master'.


Untracked files:

  (use "git add ..." to include in what will be committed)


native-pkgs/


nothing added to commit but untracked files present (use "git add" to track)

mba-5:plt soegaard$

-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Build error

2015-01-07 Thread Jens Axel Søgaard
It worked.

Thanks!

2015-01-07 18:45 GMT+01:00 Matthew Flatt :
> I wasn't able to replicate the problem, but I think I see what could go
> wrong. I've pushed an attempt at a repair.
>
> At Wed, 7 Jan 2015 18:31:35 +0100, Jens Axel Søgaard wrote:
>> Hi All,
>>
>> I got a contract when I tried to build racket. Any ideas?
>>
>> The main error is below.
>> Entire log is here:
>> https://gist.github.com/soegaard/aa8ea014e043a899a5a2
>>
>> /Jens Axel
>>
>>
>> package-source->name+type: contract violation
>>   expected: (or/c #f (or/c (quote name) (quote file) (quote dir)
>> (quote git) (quote github) (quote clone) (quote file-url) (quote
>> dir-url) (quote link) (quote static-link)))
>>   given: 'catalog
>>   in: the 2nd argument of
>>   (->*
>>(string?
>> (or/c
>>  #f
>>  (or/c 'name 'file 'dir 'git  'github 'clone  'file-url
>> 'dir-url  'link'static-link)))
>>
>>
>>   contract from: /pkg/name.rkt
>>
>>   blaming: /pkg/private/install.rkt
>>
>>(assuming the contract is correct)
>>
>>   at: /pkg/name.rkt:11.3
>>
>>   context...:
>>
>>
>> /Users/soegaard/racket-from-plt-git/plt/racket/collects/racket/contract/private/
>> blame.rkt:143:0:
>> raise-blame-error16
>>
>>
>> /Users/soegaard/racket-from-plt-git/plt/racket/collects/racket/contract/private/
>> arrow-val-first.rkt:283:3
>>
>>
>> /Users/soegaard/racket-from-plt-git/plt/racket/collects/pkg/private/install.rkt:
>> 925:2:
>> update-loop
>>
>>
>> /Users/soegaard/racket-from-plt-git/plt/racket/collects/racket/list.rkt:429:2:
>> append-map
>>
>>
>> /Users/soegaard/racket-from-plt-git/plt/racket/collects/pkg/private/install.rkt:
>> 1097:0:
>> pkg-update195
>>
>>
>> /Users/soegaard/racket-from-plt-git/plt/racket/collects/racket/file.rkt:368:8
>>
>>
>> /Users/soegaard/racket-from-plt-git/plt/racket/collects/racket/file.rkt:357:0:
>> call-with-file-lock40
>>
>>
>> /Users/soegaard/racket-from-plt-git/plt/racket/collects/pkg/main.rkt:307:16
>>
>>(submod 
>> /Users/soegaard/racket-from-plt-git/plt/racket/collects/pkg/main.rkt
>> main): [running body]
>>
>>/Users/soegaard/racket-from-plt-git/plt/racket/collects/pkg/raco.rkt:
>> [traversing imports]
>>
>>/Users/soegaard/racket-from-plt-git/plt/racket/collects/raco/raco.rkt:
>> [running body]
>>
>>/Users/soegaard/racket-from-plt-git/plt/racket/collects/raco/main.rkt:
>> [running body]
>>
>> make[2]: *** [plain-in-place] Error 1
>>
>> make[1]: *** [cpus-in-place] Error 2
>>
>> make: *** [in-place] Error 2
>>
>>
>> --
>> --
>> Jens Axel Søgaard
>>
>> _
>>   Racket Developers list:
>>   http://lists.racket-lang.org/dev



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] Build error

2015-01-07 Thread Jens Axel Søgaard
Hi All,

I got a contract when I tried to build racket. Any ideas?

The main error is below.
Entire log is here:
https://gist.github.com/soegaard/aa8ea014e043a899a5a2

/Jens Axel


package-source->name+type: contract violation
  expected: (or/c #f (or/c (quote name) (quote file) (quote dir)
(quote git) (quote github) (quote clone) (quote file-url) (quote
dir-url) (quote link) (quote static-link)))
  given: 'catalog
  in: the 2nd argument of
  (->*
   (string?
(or/c
 #f
 (or/c 'name 'file 'dir 'git  'github 'clone  'file-url
'dir-url  'link'static-link)))
   

  contract from: /pkg/name.rkt

  blaming: /pkg/private/install.rkt

   (assuming the contract is correct)

  at: /pkg/name.rkt:11.3

  context...:

   
/Users/soegaard/racket-from-plt-git/plt/racket/collects/racket/contract/private/blame.rkt:143:0:
raise-blame-error16

   
/Users/soegaard/racket-from-plt-git/plt/racket/collects/racket/contract/private/arrow-val-first.rkt:283:3

   
/Users/soegaard/racket-from-plt-git/plt/racket/collects/pkg/private/install.rkt:925:2:
update-loop

   
/Users/soegaard/racket-from-plt-git/plt/racket/collects/racket/list.rkt:429:2:
append-map

   
/Users/soegaard/racket-from-plt-git/plt/racket/collects/pkg/private/install.rkt:1097:0:
pkg-update195

   /Users/soegaard/racket-from-plt-git/plt/racket/collects/racket/file.rkt:368:8

   
/Users/soegaard/racket-from-plt-git/plt/racket/collects/racket/file.rkt:357:0:
call-with-file-lock40

   /Users/soegaard/racket-from-plt-git/plt/racket/collects/pkg/main.rkt:307:16

   (submod /Users/soegaard/racket-from-plt-git/plt/racket/collects/pkg/main.rkt
main): [running body]

   /Users/soegaard/racket-from-plt-git/plt/racket/collects/pkg/raco.rkt:
[traversing imports]

   /Users/soegaard/racket-from-plt-git/plt/racket/collects/raco/raco.rkt:
[running body]

   /Users/soegaard/racket-from-plt-git/plt/racket/collects/raco/main.rkt:
[running body]

make[2]: *** [plain-in-place] Error 1

make[1]: *** [cpus-in-place] Error 2

make: *** [in-place] Error 2


-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] crash running raco setup with racket 6.1

2014-10-23 Thread Jens Axel Søgaard
Hi David,

FWIW here is how I built the libraries for DrRacket from scratch on OS X.
I found out that it was important that the libcairo loaded by DrRacket
was built with the same versions of the "helper libraries" that
DrRacket loads.

The readme has the details:
https://github.com/soegaard/racket-osx-libs

It might me worth doubling checking that the versions of the shared
libaries that Racket loads matches your expectations.

Then again, maybe there were an API change in Cairo that
caused the problem - and if so the above is irrelevant.

/Jens Axel





2014-10-23 12:46 GMT+02:00 David Bremner :
> David Bremner  writes:
>>
>> As a point of information, I can duplicate the crash with yesterdays
>> snapshot (20141022-d9f2a84).  I didn't bother getting a backtrace there,
>> but I can if it would help.
>
> I verified that the version of libcairo2 is what makes a difference.
> Installing Debian version 1.12.16-5 made the racket build work again
> both for 6.1 and for the snapshot. Alas that's not going to be a
> feasible strategy for the official Debian builds.
>
> d
>
> _
>   Racket Developers list:
>   http://lists.racket-lang.org/dev



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] [racket] "lab notebook on learning process" (was: Re: Macros baffle me)

2014-05-07 Thread Jens Axel Søgaard
2014-05-06 23:48 GMT+02:00 Stephen Chang :
>> How about an extra button, a  "Run Benchmark" button?
>
> You can already get this with the "benchmark" package, from pkg.racket-lang.

A builtin button will hopefully make it obvious even for non-DrRacket
users, that Run is not intended for benchmarks.

For those shopping around for a language or an implementation it needs
to be painfully clear, what to do in order to get a fair measurement.

/Jens Axel



>> 2014-05-06 19:43 GMT+02:00 Sam Tobin-Hochstadt :
>>> On Tue, May 6, 2014 at 12:14 PM, Matthias Felleisen
>>>  wrote:
>>>>
>>>>> > Why does he think "Performance sucks"?
>>>>>
>>>>> Because here's the list of things that are slow
>>>>
>>>> DrRacket is an operating system running on top of your other OS
>>>> to make life for Racket developers simple. It was originally developed
>>>> for beginners, but I eat my own dog food, and I find it good (tm) for
>>>> every day Racket work.
>>>>
>>>> To evaluate performance, run the programs at the command line. Measure
>>>> there. Compare with other dynamically typed languages and report back
>>>> what you find. If you still report performance problems, try to be precise.
>>>> We are proud of Matthew and how far he has pushed Racket's performance on
>>>> real software, the kind you use on a daily basis, not just minibenchmarks.
>>>
>>> I think ultimately that this answer isn't enough. If everyone who
>>> tries out Racket in the way we suggest comes away with the impression
>>> that it's really slow, suggestions on the mailing list to measure
>>> differently won't eliminate the negative first impression, let alone
>>> for all the people who _don't_ ask about it.
>>>
>>> Could we
>>> - warn people when they use `time` in DrRacket?
>>> - provide a "performance" mode that runs programs out-of-process, or
>>> just in another place?
>>> - something else?
>>>
>>> Sam
>>> _
>>>   Racket Developers list:
>>>   http://lists.racket-lang.org/dev
>>
>>
>>
>> --
>> --
>> Jens Axel Søgaard
>>
>> _
>>   Racket Developers list:
>>   http://lists.racket-lang.org/dev



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] [racket] "lab notebook on learning process" (was: Re: Macros baffle me)

2014-05-06 Thread Jens Axel Søgaard
Sam:

> Could we
>  - warn people when they use `time` in DrRacket?
> - provide a "performance" mode that runs programs out-of-process, or
>   just in another place?
> - something else?

I like this. DrRacket has a performance mode already (disable
profiling and debugging) in the (hidded part) of the language dialog.
The casual beginner
is not likely to recognize it as such though.

How about an extra button, a  "Run Benchmark" button?

/Jens Axel


2014-05-06 19:43 GMT+02:00 Sam Tobin-Hochstadt :
> On Tue, May 6, 2014 at 12:14 PM, Matthias Felleisen
>  wrote:
>>
>>> > Why does he think "Performance sucks"?
>>>
>>> Because here's the list of things that are slow
>>
>> DrRacket is an operating system running on top of your other OS
>> to make life for Racket developers simple. It was originally developed
>> for beginners, but I eat my own dog food, and I find it good (tm) for
>> every day Racket work.
>>
>> To evaluate performance, run the programs at the command line. Measure
>> there. Compare with other dynamically typed languages and report back
>> what you find. If you still report performance problems, try to be precise.
>> We are proud of Matthew and how far he has pushed Racket's performance on
>> real software, the kind you use on a daily basis, not just minibenchmarks.
>
> I think ultimately that this answer isn't enough. If everyone who
> tries out Racket in the way we suggest comes away with the impression
> that it's really slow, suggestions on the mailing list to measure
> differently won't eliminate the negative first impression, let alone
> for all the people who _don't_ ask about it.
>
> Could we
> - warn people when they use `time` in DrRacket?
> - provide a "performance" mode that runs programs out-of-process, or
> just in another place?
> - something else?
>
> Sam
> _
>   Racket Developers list:
>   http://lists.racket-lang.org/dev



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] Refactoring Idea

2014-04-28 Thread Jens Axel Søgaard
From time to time the topic of refactoring pop up on the mailing list.

Here is one feature I'd like:
After renaming an exported identifier in a module foo,
any references to the identifier in external modules need
to be renamed too. DrRacket could after renaming in foo is done,
ask for a folder in which to search for module that require foo and
rename the identifier in those modules.


--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] actionable items, was: comments on "comments on learning Racket"

2014-04-28 Thread Jens Axel Søgaard
2014-04-28 16:12 GMT+02:00 Matthias Felleisen :
> SAM:
>
>> Also, I think that in almost every course using DrRacket, the students
>> will need to learn how to choose languages, because they will switch
>> from one teaching language to the next. So I think this won't be
>> unfriendly.
>
> I am not sure this is true for simple high school courses or anyone who wants 
> to run Bootstrap 2 off-line.

In a high school context the teacher will typically show the students
how to install DrRacket and then guide them through their first
example.

Starting the program with #lang beginner would not be a problem, as
far as I can see.

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] Missing match-expander? export from racket/match

2014-01-04 Thread Jens Axel Søgaard
It seems racket/match exports prop:match-expander, but not
match-expander? . Is that on purpose?

https://github.com/plt/racket/blob/master/racket/collects/racket/match/match.rkt

https://github.com/plt/racket/blob/master/racket/collects/racket/match/stxtime.rkt

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Can't change plot in DrRacket without getting link errors

2014-01-03 Thread Jens Axel Søgaard
Try this:
  - open the menu "Language" in DrRacket
  - choose the menu item "Choose language..."
  - click the button "Show details"
  - remove the tick in "Populate 'compiled' directories (for faster loading)

/Jens Axel



2014/1/4 Neil Toronto :
> I do this:
>
>  * In DrRacket, open "pkgs/plot-pkgs/plot-lib/plot/private/common/draw.rkt"
>
>  * Make a small change, save
>
>  * At the command line, "racket/bin/raco setup --no-docs -l plot"
>
>  * Run a test file in another tab in DrRacket that has (require plot)
>
>
> I wait a long time (I think it's recompiling) and get this error:
>
> link: bad variable linkage;
>  reference to a variable that has the wrong procedure or structure-type
> shape
>   reference phase level: 0
>   variable module:
> "/home/neil/plt/pkgs/plot-pkgs/plot-lib/plot/private/common/draw.rkt"
>   variable phase: 0
>   reference in module:
> "/home/neil/plt/pkgs/plot-pkgs/plot-gui-lib/plot/private/gui/plot2d.rkt" in:
> draw-bitmap
>
>
> So I remove the "compiled" directory and try again. Same problem.
>
> Here's the kicker: I always get link errors *until I close "draw.rkt" in
> DrRacket*. After that, I can remove the "compiled" directory, rebuild, and
> run the program without errors.
>
> Does anybody know what's going on?
>
> Neil ⊥
> _
>  Racket Developers list:
>  http://lists.racket-lang.org/dev



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] Documentation

2013-12-08 Thread Jens Axel Søgaard
In cases where the semantics of constructs are changed, should the
documentation have a margin note stating the version number of the
change?

I am in particular thinking of "case":

http://docs.racket-lang.org/reference/case.html#%28form._%28%28lib._racket%2Fprivate%2Fmore-scheme..rkt%29._case%29%29

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Huh?

2013-12-03 Thread Jens Axel Søgaard
Thanks for the tip on renaming. Just what I needed.

/Jens Axel


2013/12/3 Eli Barzilay :
> 6 hours ago, Jens Axel Søgaard wrote:
>> In DrRacket 6.0.0.1 open
>>
>>pkgs/draw-pkgs/draw-lib/racket/draw/private/record-dc.rkt
>>
>> and then click Run.
>>
>> I see:
>>
>>   define-values: assignment disallowed;
>>cannot re-define a constant
>> constant: get-recorded-command1.1
>>
>> Why?
>
> That's not new -- usually when you run the code you get a clean
> environment with the old instantiation gone, but some core files are
> shared across runs, so it's like trying to redefine things that are
> already defined.  Many files in racket/* will do the same.  To debug
> this kind of stuff it can be helpful to work on a copy of the file
> that you want to edit, and rename it back over the original (and
> recompile) when it's working.
>
> --
>   ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
> http://barzilay.org/   Maze is Life!



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] Huh?

2013-12-02 Thread Jens Axel Søgaard
In DrRacket 6.0.0.1 open

   pkgs/draw-pkgs/draw-lib/racket/draw/private/record-dc.rkt

and then click Run.

I see:

  define-values: assignment disallowed;
   cannot re-define a constant
constant: get-recorded-command1.1

Why?

I tried the exact same experiment with record-dc.rkt in version 5.3.4
with the same result.

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] cairo_recording_surface_create

2013-12-01 Thread Jens Axel Søgaard
2013/12/1 Matthew Flatt :
> What happens if you run `drracket` directly from the command line,
> instead of using `open`?

Then I get to see that the error message, that tells me that
that I forgot to run make (well it says "bytecode file needs re-compile").
And indeed I did forget to run make.

After running make, everything works as expected.

For the future I will use bin/drracket rather than open DrRacket.app.

Thanks.
/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] cairo_recording_surface_create

2013-11-30 Thread Jens Axel Søgaard
Hi All,

I'd like to add cairo_recording_surface_create to the cairo ffi in
draw/unsafe/cairo.rkt.

Adding the line (and just that line)

(define-cairo cairo_recording_surface_create (_cfun _uint
_cairo_rectangle_t-pointer -> _cairo_surface_t)

  #:make-fail make-not-available

  #:wrap (allocator cairo_surface_destroy)

will however prevent DrRacket from running.

It seems to me, that it ought to have worked. Even more interesting is
that the exact same definition works in this example:

#lang racket
(require ffi/unsafe ffi/unsafe/alloc ffi/unsafe/define)
(define cairo-lib2 (ffi-lib "libcairo.2.dylib"))
(define-ffi-definer define-cairo cairo-lib2)
(define-syntax-rule (_cfun . rest) (_fun #:in-original-place? #t . rest))
(define-cstruct _cairo_rectangle_t ([x _double] [y _double] [width
_double] [height _double]))
(define _cairo_surface_t (_cpointer 'cairo_surface_t))
(define-cairo cairo_surface_destroy (_cfun _cairo_surface_t -> _void)
#:wrap (deallocator))

(define-cairo cairo_recording_surface_create
  (_cfun _uint _cairo_rectangle_t-pointer -> _cairo_surface_t)
  #:make-fail make-not-available
  #:wrap (allocator cairo_surface_destroy))

What am I missing in cairo.rkt ?

--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Racket Guide chapter on concurrency

2013-10-07 Thread Jens Axel Søgaard
If you need examples, take a look at:
   The Little Book of Semaphores
   http://www.greenteapress.com/semaphores/downey05semaphores.pdf

/Jens Axel


2013/10/6 David T. Pierson :
>
> Hi all,
>
> At the hackathon Asumu helped me work on a Guide chapter on concurrency.
>
> Thanks Asumu!
>
> Since then I've fleshed it out some more and pushed a commit to github.
>
> https://github.com/davidtpierson/racket/commit/d2fb857efec8ce508ac6f76afa845d788edab4c1
>
> It probably needs more work.  I would love some feedback before I dare to
> submit a pull request.
>
> Some of my concerns, in no particular order:
>
> 1) Should it be broken into separate pages?
>
> 2) It starts out with the basics of threads.  Is this too trivial to cover?
>
> 3) There are lots of ways to synchronize Racket threads.  I try to cover them
> broadly, but don't really delve into which ones are best.  Parts seem like
> they are just restating information from the reference.  Should there be more
> prescriptive text?
>
> 4) Some of the examples feel clumsy.  Contriving concurrency examples
> that are both simple and meaningful was hard.  I'm not sure I succeeded.
>
> Thanks for any feedback (on the above issues or anything else.)
>
> David
> _____
>   Racket Developers list:
>   http://lists.racket-lang.org/dev



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] generic binding forms

2013-08-25 Thread Jens Axel Søgaard
 bindings.
>
> ;; functions
> > (~define (f1 x y) (+ x y))
> > (f1 10 20)
> 30
> > (~define (f2 ($ (list x y))) (+ x y))
> > (f2 (list 10 20))
> 30
>
> ;; non-functions
> > (~define a1 100)
> > a1
> 100
> > (~define (~v a2 a3) (values 134 456))
> > a2
> 134
> > a3
> 456
>
> You can nest bind instances too:
>
> > (~define (~v ($ (list b1 b2)) b3) (values (list 22 33) 44))
> > b1
> 22
> > b2
> 33
> > b3
> 44
>
> Does anyone think this is useful? Or is it just a lot of work to save
> a little bit of typing? Has anyone tried something like this before?
>
> It's still very much a work in progress but I figure I would ask for
> some feedback earlier rather than too later, in case there is
> something that makes this infeasible.
>
> Brave souls can look at the hackery here:
> https://github.com/stchang/generic-bind/blob/master/generic-bind.rkt
> (Warning: I'm still trying to figure out all the toys in the Racket
> macro toolbox. For the most part, everything still looks like a
> syntax-rule/case/parse/->datum nail to my hammer.)
>
> Technical question: I couldn't figure out a nice way to implement
> ~let. Essentially, I want a let form where some clauses are let-values
> and some are match-let, but I need to bind them all at the same time,
> like let. I can't define a ~lambda that works with values because
> functions in racket can't receive values. Anyone have any ideas?
>
> Side observation: Trying to get things to work with multiple return
> values was a pain because they don't compose (as in, functions can
> produce them but can't receive them). Not sure if anything can be done
> about this though.
> _
>   Racket Developers list:
>   http://lists.racket-lang.org/dev
>



-- 
-- 
Jens Axel Søgaard
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] using Racket to build an image-based Lisp: feasible?

2013-03-04 Thread Jens Axel Søgaard
Hi Mikel,

You projects sounds very interesting.

2013/3/4 mikel evins :
> Oh, except for the case where I want to deploy on iOS, which forbids JIT.
>
> Of course, Racket doesn't deliver on iOS anyway, as far as I know, except 
> through
> the expedient of compiling to Javascript (which may be adequate; we'll soon 
> see.)

On platforms without JIT is is turned off.

I haven't tried compiling and running the project below, but
the description sounds promising:

https://github.com/nevo/racket-hack

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `math' compilation time !!!

2013-02-27 Thread Jens Axel Søgaard
2013/2/27 Eli Barzilay :
> On Sunday, Eli Barzilay wrote:
>> According to my rough count (and running setup with a "-j 1"),
>> compiling `math' takes 40% of the whole tree compilation.
>
> I'm surprised that nobody finds this disturbing.  Maybe it was the
> lack of bangs in the subject.

Disturbing, yes.  But besides porting it to non-Typed Racket,
is there anything that can be done?

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] raco pkg and github

2013-02-01 Thread Jens Axel Søgaard
2013/2/1 Asumu Takikawa :
> On 2013-02-01 06:23:06 -0700, Jay McCarthy wrote:
>> I had originally tried to do that, but Github wasn't providing tar
>> balls for anything other than branch HEADs and tags. I'm surprised
>> that it works for you and not for me. Am I just crazy or did you set
>> something on your repository to make it work?
>
> Maybe it's a new feature they added recently? I think Jens was saying on
> IRC that it wasn't documented in the API.

It was about 6-7 months ago I checked, and back then I couldn't find
anything. Now I see it here:

http://developer.github.com/v3/repos/contents/#get-archive-link

The v3 API was in beta from June, so I might have been looking
at the v2 API back then.

Anyways, great find Asumu.

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] case-> and for/sum:

2013-01-04 Thread Jens Axel Søgaard
This version blames the correct expression.

The error message itself is however in terms of the expanded
code and I see why that is a key problem.

/Jens Axel


for-sum.rkt
Description: Binary data
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] case-> and for/sum:

2013-01-04 Thread Jens Axel Søgaard
2013/1/5 Matthias Felleisen :
>
> On Jan 4, 2013, at 6:35 PM, Jens Axel Søgaard wrote:
>
>> Here is my attempt. The only problem, is that when type checking
>> fails, the set! expression is blamed instead of user code.
>
>
> That is the key problem.

I know which user expression it is, body-expr, I just don't
know how to communicate it to the type checker.

/Jens Axel

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] case-> and for/sum:

2013-01-04 Thread Jens Axel Søgaard
2013/1/4 Neil Toronto :
> I gave `for/sum:' a little thought recently, though, and I couldn't think of
> how to make it work without annotations. Maybe you'll have more success. I'm
> less motivated to fix `for/sum:' than you are. :D

Here is my attempt. The only problem, is that when type checking
fails, the set! expression is blamed instead of user code.

/Jens Axel


for-sum.rkt
Description: Binary data
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] case-> and for/sum:

2013-01-04 Thread Jens Axel Søgaard
2013/1/3 Neil Toronto :
> I solved it by not using `for/sum' and writing this ridiculous function for
> the recursive base case and the initial values in `x':
>
>   (: zero-of (case-> (Real -> Real)
>  (Number -> Number)))
>   (define (zero-of x) 0)
>
> Fortunately, it should get inlined. I also renamed `U' to `V', because it
> was overshadowing the type name.

Thanks for the solution.

I am very fond of for and friends in Racket code, and
it annoys me to port these constructs to Typed Racket.
I know the goal is for Typed Racket to use the
output of the macro expansion of for and friends,
but maybe it is worth the effort to implement Typed
Racket versions of the most used for-variants?

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] case-> and for/sum:

2013-01-03 Thread Jens Axel Søgaard
Ignore the previous example. Here is the example again, now
with correct usage of case-lambda. The for/sum problem remains.

/Jens Axel


#lang typed/racket
(require math)

(: matrix-solve-upper
   (All (A) (case->
 ((Matrix Real)   (Matrix Real)  -> (Matrix Real))
 ((Matrix Real)   (Matrix Real)   (-> A) -> (U A (Matrix Real)))
 ((Matrix Number) (Matrix Number)-> (Matrix Number))
 ((Matrix Number) (Matrix Number) (-> A) -> (U A (Matrix
Number))
(define matrix-solve-upper
  ; solve the equation Ux=b
  ; using back substitution
  (case-lambda
[(U b)
 (define (default-fail)
   (raise-argument-error
'matrix-solve-upper
"The upper triangular matrix is not invertible." 0 U))
 (matrix-solve-upper U b default-fail)]
[(U b fail)
  (define m (matrix-num-rows U))
  (define x (make-vector m 0))
  (for ([i (in-range (- m 1) -1 -1)])
(define bi (matrix-ref b i 0))
(define Uii (matrix-ref U i i))
(when (zero? Uii) (fail))
(define x.Ui (for/sum ([j (in-range (+ i 1) m)])
   (* (matrix-ref U i j) (vector-ref x j
(vector-set! x i (/ (- bi x.Ui) Uii)))
  (vector->matrix m 1 x)]))

 (define U (matrix [[4 -1 2  3]
[0 -2 7 -4]
[0  0 6  5]
[0  0 0  3]]))
 (define b (col-matrix [20 -7 4 6]))
 b ; expected
 (define x (solve-upper-triangular U b))
 (matrix* U x)
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] TR: case-> and for/sum:

2013-01-03 Thread Jens Axel Søgaard
Apropos the discussion on porting from Racket to Typed Racket.
The following snippet was written in Racket, and now I want
to add types.

The problem is that I have used for/sum and due to the case->
I can't see how to change the for/sum to a for/sum: .

/Jens Axel

#lang typed/racket
(require math)

(: matrix-solve-upper
   (All (A) (case->
 ((Matrix Real)   (Matrix Real)  -> (Matrix Real))
 ((Matrix Real)   (Matrix Real)   (-> A) -> (U A (Matrix Real)))
 ((Matrix Number) (Matrix Number)-> (Matrix Number))
 ((Matrix Number) (Matrix Number) (-> A) -> (U A (Matrix
Number))
(define (matrix-solve-upper U b)
  (define (default-fail)
(raise-argument-error 'matrix-solve-upper
  "The upper triangular matrix is not invertible." 0 U))
  ; solve the equation Ux=b
  ; using back substitution
  (case-lambda
[(U b) (matrix-solve-upper U b default-fail)]
[(U b fail)
 (define m (matrix-num-rows U))
 (define x (make-vector m 0))
 (for ([i (in-range (- m 1) -1 -1)])
   (define bi (matrix-ref b i 0))
   (define Uii (matrix-ref U i i))
   (when (zero? Uii) (fail))
   (define x.Ui (for/sum ([j (in-range (+ i 1) m)])
  (* (matrix-ref U i j) (vector-ref x j
   (vector-set! x i (/ (- bi x.Ui) Uii)))
 (vector->matrix m 1 x)]))

(define U (matrix [[4 -1 2  3]
   [0 -2 7 -4]
   [0  0 6  5]
   [0  0 0  3]]))
(define b (col-matrix [20 -7 4 6]))
b ; expected
(define x (solve-upper-triangular U b))
(matrix* U x)
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] [plt] Push #25941: master branch updated

2012-12-22 Thread Jens Axel Søgaard
2012/12/22  :
> 1aebd17 Neil Toronto  2012-12-21 22:59

> | * Specialized row reduction for determinants; removed option to not do
> |   partial pivoting (it's never necessary otherwise)

Partial pivoting is used to reduce round-off error. If the matrix consists
of integers or fraction, then due to exact arithmetic, there is no need
to do partial pivoting.

And it gets worse. It is subtle though. Consider matrices with (exact)
integer entries and Gauss elimination with partial pivoting, the result will be
a matrix with fractions. For each division a gcd computation is needed
to reduce the fraction. This hidden cost is can be large in some cases.

According to
https://www.cs.drexel.edu/~wan/publications/thesis.pdf
page 33 Gauss elimation turns onto a O(n^4) algorithm.
(Geddes mentions the same issue in relation to Gaussian
elimination over a general ring).

Related:

The Sage documentation on LU factorization, imply that besides
no-pivoting, the first-non-zero-variant is useful too:
http://www.sagemath.org/doc/reference/sage/matrix/matrix2.html

In fact the partial pivoting is not used as the default.

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] bit-vectors and serialization

2012-12-17 Thread Jens Axel Søgaard
2012/12/17 Ryan Culpepper :
> I'd like to make bit-vectors serializable so I can replace sql-bits with
> them. I'll deprecate the current sql-bits names but keep them around for a
> while.
>
> The issue is that bit-vectors are implemented using fxvectors, which are
> serializable, but simply serializing them will presumably cause errors if a
> bit-vector is serialized on a 64-bit machine and deserialized on a 32-bit
> machine or vice versa.
>
> One solution would be to use bytes instead of fxvectors. The performance is
> about the same as far as I could tell using the sieve benchmark.
>
> Another option is to declare that serialization across word sizes doesn't
> work for bit vectors.
>
> Any opinions?

The sieve-benchmark works on individual bits, so it makes sense that
the performance is about the same. What happens for operations that
work on words (e.g. the popcount operation)? My intuition is that
these operations will be slower.

An alternative to switching to bytevectors is to write a pair of functions
bit-vector->integer and integer->bit-vector and simply serialize the
bit-vector as an integer.

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] Sorry.

2012-12-04 Thread Jens Axel Søgaard
Hi All,

I made a mistake pushing some commits.
Rather than mess things more up, I hope
some one has enough git-fu to undo the commit.

Normally push refused to do anything but fast-forward
commits, but the commit looks wrong on Github.

/Jens Axel (with red ears)
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Implementation of bit vectors

2012-11-27 Thread Jens Axel Søgaard
2012/11/27 J. Ian Johnson :
> As I intend to use bitvectors to do fast set operations, and cardinality is a 
> set operation, I wrote up a "fast count bits" function that should be rolled 
> in for the vector implementation:
> https://gist.github.com/4154642

I have used your code to add a function bit-vector-count that count the number
of set bits in the bit-vector.

There is an issue of potential confusion over names though.
In the data collection, the -count suffix normally returns the size of
the data structure.
For vectors the suffix -length is normally used.

-- 
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Implementation of bit vectors

2012-11-27 Thread Jens Axel Søgaard
Hi Pierpaolo,

2012/11/27 Pierpaolo Bernardi :
>> Any comments on the implementation and documentation are welcome.
>> The bit vector is represented as a vector of fixnums (packaged in a
>> struct of course).
>
> I seem to understand that you do not exploit the packed representation
> of bits in the iteration construct, is this right?

In in-bit-vector could be improved. Currently it just calls bit-vector-ref
repeatedly.

> Also, you store and retrieve booleans, not bits, so the name
> 'bit-vector' is misleading.

Potato / Potato :-)

http://wiki.call-cc.org/eggref/4/iset

> 'find' and 'count' operations optimized for the representation would
> be a useful addition.

Good idea. I better rename the current count to size, and
then use count to count ones.

--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Implementation of bit vectors

2012-11-26 Thread Jens Axel Søgaard
Hi All,

I have implemented an alternative version of bit-vectors using bignums
to represent the bits.

As is the bignum implementation is much slower, than the vector-of-fixnum one.

The main reason as far as I can tell is due to bit-vector-set! .
Since bignums aren't mutable I can not simply flip a bit and need to compute
a new bignum. Unless bignums are sharing limbs this will be slow for large
bit-vectors.

Another possibility is that I have missed something obvious.
The functions bit-vector-set! is here:

(define (bit-vector-set! bv n b)
  ; bv is a bit-vector
  ; n is the bit number
  ; b is #f or #t
  (define bits (bit-vector-bits bv))
  (define mask (arithmetic-shift 1 n))
  (cond
[b
 (set-bit-vector-bits! bv (bitwise-ior bits mask))]
[(bitwise-bit-set? bits n)
 (set-bit-vector-bits! bv (bitwise-xor bits mask))]
[else (void)]))

The entire implementation is here:

https://github.com/soegaard/racket/blob/4b299ea66a77100538940794cd799cb88929b7e3/collects/data/bit-vector-bignum.rkt

The benchmark is here:

https://github.com/soegaard/racket/blob/4b299ea66a77100538940794cd799cb88929b7e3/collects/data/benchmark-bit-vector-representations.rkt


-- 
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] Old pull requests on Github

2012-11-24 Thread Jens Axel Søgaard
Hi All,

I notice that there a few old pull requests on Github without any
form of comments. Even a "we will look at this later" comment
looks better to out siders, than none at all.

https://github.com/plt/racket/pulls

Any thoughts?

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] Implementation of bit vectors

2012-11-24 Thread Jens Axel Søgaard
Hi All,

I have written an implementation of bit vectors intended to be part of
the data collection.

https://github.com/plt/racket/pull/176

Any comments on the implementation and documentation are welcome.
The bit vector is represented as a vector of fixnums (packaged in a
struct of course).

--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Math library pushed

2012-11-17 Thread Jens Axel Søgaard
Hi All,

Thanks to Asumu, Erich and a few others on the irc channel
I got it working.

I tried rebasing, but couldn't make it work. I am not sure why.
The resulting pull request still had the entire history.

Then I tried making a new branch. Reseting to a point before
Neils initial commit. Then fetching and merging the plt/racket
repository and finally cherry-picking the commits I needed.

-- 
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Math library pushed

2012-11-17 Thread Jens Axel Søgaard
2012/11/16 Neil Toronto :
> I've just made the initial commit for the math library. You will all notice
> the build time increase. Some will notice that "(require math)" imports a
> bunch of goodies that Racket didn't have before.
>
> About half is documented so far, and half has coverage in the test cases.
> Some things are known to be broken, but not many. The most egregious, which
> needs to be fixed very soon, is this one:

I have made a pull request on Github with documentation on the number
theory functions (and other stuff).

However since Neil's initial commit didn't include the history, the
pull request contains ~300 commits.

Is there a better way to commit my changes?

    https://github.com/plt/racket/pull/169

-- 
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Math library pushed

2012-11-16 Thread Jens Axel Søgaard
A fix is even better!

Thanks,
Jens Axel


2012/11/16 Matthew Flatt :
> At Fri, 16 Nov 2012 21:21:29 +0100, Jens Axel Søgaard wrote:
>> 2012/11/16 Matthew Flatt :
>>
>> >  * require: unknown module
>> > module name: #> > "/Users/mflatt/proj/plt/collects/math/special-functions.rkt"
>> typed-module5)>
>> >
>> >So far, this one looks like a problem with finding a submodule in a
>> >".zo" file --- that is, a bug that I will have to track down and
>> >fix.
>>
>> This is the error, I ran into, when I tried to merge in documentation for the
>> number theory functions.
>>
>> Is there a workaround?
>
> Unfortunately, I don't see a workaround for older versions. I've fixed
> it in the current git master, though.
>



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Math library pushed

2012-11-16 Thread Jens Axel Søgaard
2012/11/16 Matthew Flatt :

>  * require: unknown module
> module name: # "/Users/mflatt/proj/plt/collects/math/special-functions.rkt" 
> typed-module5)>
>
>So far, this one looks like a problem with finding a submodule in a
>".zo" file --- that is, a bug that I will have to track down and
>fix.

This is the error, I ran into, when I tried to merge in documentation for the
number theory functions.

Is there a workaround?

-- 
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Character classification

2012-09-04 Thread Jens Axel Søgaard
2012/9/4 Pierpaolo Bernardi :
> On Tue, Sep 4, 2012 at 3:11 PM, Jens Axel Søgaard  
> wrote:
>> Since the R5RS version of char-numeric? (according to the documentation)
>> tests for the ten digits, you can use:
>>
>> (require (only-in r5rs char-numeric?))
>
> Thanks Jens Axel.  However, the r5rs version appears to be the same as
> the Racket version.

I consider that a bug.

http://docs.racket-lang.org/r5rs-std/r5rs-Z-H-9.html?q=char-numeric%3F#%_idx_490
"The numeric characters are the ten decimal digits."

Note that meaning changed in R6RS:
"A character is numeric if it has the Unicode “Numeric” property."

So the current Racket behaviour matches R6RS.

/Jens Axel


Tested with:
>
> 
> #lang r5rs
>
> (define (test)
>   (let again ((i 0))
> (cond ((< i #xD800)
>(let ((c (integer->char i)))
>  (cond ((char-numeric? c)
> (display (list i c))
>     (newline)))
>  (again (+ i 1)))
> 



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Character classification

2012-09-04 Thread Jens Axel Søgaard
Since the R5RS version of char-numeric? (according to the documentation)
tests for the ten digits, you can use:

(require (only-in r5rs char-numeric?))

/Jens Axel

2012/9/4 Pierpaolo Bernardi :
> The non-cooperation between char-numeric? and string->number is very annoying.
>
> I had to resort to:
>
> (define (my-char-numeric? c)
>   (char<=? #\0 c #\9))
>
> Maybe I am missing a function similar to my-char-numeric? somewhere in
> the Racket docs?
>
> FWIW, my humble opinion is that char-numeric? should be defined as the
> my- version above. The Unicode category, if that's what one wants, can
> be accessed with char-general-category.
>
> Cheers
> P.
> _
>   Racket Developers list:
>   http://lists.racket-lang.org/dev



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Wrapping loops for TR isn't working, and the type annotations are for the wrong value

2012-08-15 Thread Jens Axel Søgaard
> There is a similar problem with for/product: . The initial 1 is that an 
> integer, a real
> or a complex?

> (for/product: : Real ([i : Integer (in-range 0 5)]) (/ i))

Type Checker: Expected Integer, but got Exact-Rational in:
(for/product: : Real ((i : Integer (in-range 0 5))) (/ i))

It does not help to change the type of i to Real :

> (for/product: : Real ([i : Real (in-range 0 5)])   (/ i))
Type Checker: Expected Integer, but got Real in: (for/product: : Real
((i : Real (in-range 0 5))) (/ i))

/Jens Axel


/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Wrapping loops for TR isn't working, and the type annotations are for the wrong value

2012-08-15 Thread Jens Axel Søgaard
2012/8/15 Neil Toronto :

> Other options:
>
>  1. Raise an error when the vector isn't filled.
>  2. Return a (Vectorof (U T #f)) (better than (Vectorof (U T 0))?).
>  3. Always return a vector whose length is the number of iterations.

Or a variation of 2.:

4. Let the user supply the value to fill the vector with.

This could be relevant in cases where less than the #:length specified
number of values is produced.

> (for/vector #:length 10 ([i 5]) i)
'#(0 1 2 3 4 0 0 0 0 0)

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Sublinear functions of superfloat numbers

2012-07-02 Thread Jens Axel Søgaard
Is the following a fair summary?

The idea is to divide the real axis in three parts.
 x < y < z

Here x is a real (double), y is a slightly larger than +max.0,
and z is a very large.

Now sqrt(x) is just a real (double).

Let y be an exact integer only slightly larger than +max.0.
Even though y is larger than +max.0 the true sqrt of y is
actually smaller than +max.0 and thus representable as a float.
It is therefore possible to extend the standard sqrt function
to numbers slightly above +max.0.

For very large numbers z where sqrt(x) is larger than +max.0
return +inf.0 unless z happens to be a perfect square.


The sqrt function is a sublinear function. This extension is also
possible for other members of this class such as the logarithms.
How to extend the function depend on the function.


The other example, the periodic trigonometric functions is
slighly different.

Here the problem is that the argument must be reduced before
the actual computation can take place. The reduction is
simple in principle - just subtract the period repeatedly
until the argumet is so small the standard function works

However the period irrational, so in order to avoid loss of
precision, one must compute the period with an appropriate
number of decimals compared to the argument before the
reduction can take place.

/Jens Axel
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Using licensed code

2012-07-01 Thread Jens Axel Søgaard
Hi,

2012/7/1 Eli Barzilay 

> Three hours ago, Neil Toronto:
>


> > [*] Unfortunately, the `science' collection has a license problem:
> > the stated license (LGPL) at the top any of its files can't be the
> > actual license if the file was derived from the Gnu Science Library
> > (GSL), which is GPL. Most of the files I'm interested in converting
> > to Typed Racket are from the GSL.
>
> GPL is a problem.
>

I would absolute *love* to get proper linear algebra libraries.
With proper I mean that areas such as eigenvalue computations
and singular value decomposition is included.

The license of GSL is of course a problem. The readline
solution doesn't really fit well in this context.

However GSL is not the only matrix library out there. LAPACK (
http://www.netlib.org/lapack/) has license that fits better.

The code is in Fortran 90 though, so it might be harder to
translate directly. That said, it might make sense to
go the FFI-route for matrix computations. Getting the details
right for the more advanced algorithms is hard, very hard.

-- 
Jens Axel Søgaard
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Hyperbolic functions

2012-06-26 Thread Jens Axel Søgaard
Just in case: They are available in the Science Collection:

http://planet.racket-lang.org/package-source/williams/science.plt/4/6/planet-docs/science/mathematical-functions.html#(def._((planet._math..rkt._(williams._science..plt._4._5))._acosh))

/Jens Axel




2012/6/24 Antonio Menezes Leitao :
> Hi,
>
> Given that Racket implements the hyperbolic functions
> sinh, cosh, and tanh, I would like to suggest that it also
> provides the inverse functions asinh, acosh and atanh.
>
> For the moment, I'm living with my own definitions but
> it would be nicer if these were pre-defined.
>
> Best,
> Antonio.
> _
>  Racket Developers list:
>  http://lists.racket-lang.org/dev



-- 
--
Jens Axel Søgaard

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Potential search improvement

2012-05-29 Thread Jens Axel Søgaard
2012/5/29 Eli Barzilay :
> I have made a possibly useful improvement to the JS search code.
> It's not pushed, yet, but I dropped the revised JS code on the
> pre-built pages so you can try it out here:
>
>  http://pre.racket-lang.org/docs/html/search/
>
> and compare searches with the usual page:
>
>  http://docs.racket-lang.org/search/
>
> I'd appreciate people playing with it to find about potential problems
> with the ordering and possibly with different browsers.

I like it.

A quick note: I searched for "Scribble" and didn't get
the main manual. The reason is that is named:

 "Scribble: The Racket Documentation Tool  in scribble"

This case could be solved by renaming it:
 "Scribble - The Racket Documentation Tool  in scribble"

Or by stripping punctuation in manual titles. Stripping other
things than manual titles would be a bad idea (in case
actual identifiers were involved), but it it seems that
the manual titles doesn't contain any:

http://pre.racket-lang.org/docs/html/index.html

> The thing is that they used to be lumped to 2 groups with exact
> matches first.  Now I made each of these be in its own group, so
> there's a little more order.  To see an example that works nicely now
> try "splay".

Sweet!

I am undecided on the following:
Try a search for list. The results are a bunch of places where list
is exported from.

It would be nice to see the these more prominently displayed:

   List Filtering  in reference
   List Iteration  in reference
   List Iteration from Scratch  in guide
   List Operations  in reference

It won't take long, before 20 modules export list, and the
reference and guide results disappear from the front page.

Hmm. How about displaying a yellow box at the top
of the results saying "x hits from guide
and y hits from reference, click here to see them".
This way the guide and reference hits are "in your face"
for beginners".

The actual results for list:

list  provided from racket/base, racket
list  provided from r5rs
list  provided from rnrs/base-6
list  provided from lang/htdp-advanced
list  provided from lang/htdp-beginner
list  provided from lang/htdp-beginner-abbr
list  provided from lang/htdp-intermediate
list  provided from lang/htdp-intermediate-lambda
list  provided from deinprogramm/DMdA-advanced
list  provided from deinprogramm/DMdA-assignments
list  provided from deinprogramm/DMdA-vanilla
list  provided from lazy
list  provided from srfi/1
List  provided from typed/racket/base, typed/racket
list box  in gui
List Filtering  in reference
List Iteration  in reference
List Iteration from Scratch  in guide
List Operations  in reference
list patterns  in syntax

/Jens Axel

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] OS X 10.8 includes new restrictions on running apps

2012-02-22 Thread Jens Axel Søgaard
The tech press reports that the default is to "medium" i.e. applications
downloaded from the mac app store and from identified developers (that is
signed applications) are allowed to run.

/Jens Axel

2012/2/21 Robby Findler 

> I'm hoping that there will be some backlash from this and we'll not
> actually see a high setting being the default in 10.8 
>
> Robby
>
> On Tue, Feb 21, 2012 at 3:56 PM, John Clements
>  wrote:
> > In a move that I find not even slightly surprising, the new Apple
> operating system (10.8, out soon?) includes new features that make it
> harder for developers to deploy their code on user machines.
> >
> > http://tidbits.com/article/12795
> >
> > Specifically, the technology is called "Gatekeeper", and it allows users
> to choose between various levels of security.  At the highest level, you
> can choose to run only programs distributed through Apple's "App Store."
> Bleah. There is also a next level down, though, that runs any program that
> has acquired a signing certificate from Apple. It's free... if you're a
> member of Apple's developer program, which appears to currently be $99/year.
> >
> > I'm also curious/worried about what the terms of the agreement are; as
> with any development environment, Racket can *certainly* be used to run
> ill-behaved programs; if acquiring the certificate means signing something
> accepting legal liability for harm done by users of the application, Racket
> is a non-starter.
> >
> > Anyhow, just something else to be aware of.
> >
> > John
> >
> >
> > _____
> >  Racket Developers list:
> >  http://lists.racket-lang.org/dev
> >
>
> _
>  Racket Developers list:
>  http://lists.racket-lang.org/dev
>



-- 
-- 
Jens Axel Søgaard
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] new logo

2012-02-13 Thread Jens Axel Søgaard
2012/2/12 Eli Barzilay 

> An hour ago, Michael W wrote:
> >
> > Or something with the parenthesis "echo" motif on the main site:
> > http://img513.imageshack.us/img513/5233/lambdarechopng.jpg
>
> This one is great!



> Here's a rough sketch that shows what I'm thinking of (using the shiny
> bg):
>
>  http://tmp.barzilay.org/cr.png
>
>
>From all the suggestions so far, this is the concept I like the best.
(Imagine it rendered in the style of the new r-logo).

Pros:  * it is clear it is an R
  * it is clear R builds on lambda
  * a black and white version is easy to make
  * it will work in small sizes too

Who cares about unbalanced parentheses in logos?

-- 
Jens Axel Søgaard
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] feature request: gcd, lcm for rationals

2011-12-10 Thread Jens Axel Søgaard
2011/12/10 Stephen Bloch 

>
> On Dec 9, 2011, at 3:31 PM, Daniel King wrote:
>
> > On Fri, Dec 9, 2011 at 15:27, Carl Eastlund  wrote:
> >> What does "divides" even mean in Q?  I think we need David to explain
> >> what his extension of GCD and LCM means here, in that "divisors" and
> >> "multiples" are fairly trivial things in Q.
> >
> > I don't suppose to understand all the math on this page, but I think
> > it uses the same definition that dvh is using.
> >
> > http://mathworld.wolfram.com/GreatestCommonDivisor.html
>
> Interesting: the Mathematica people have extended the gcd function from
> the integers to the rationals, not by applying the usual definition of gcd
> to Q (which would indeed be silly, as everything except 0 divides
> everything else), but by coming up with a different definition which, when
> restricted to integers, happens to coincide with the usual definition of
> gcd.
>

If we for rational numbers x and y define "x divides y" to mean "y/x is an
integer",
then I believe the definition
  d is a gcd of x and y
 <=> i) d divides a and y
ii) e divides x and y => d divides e
coincides with the MathWorld definition.


> I would wonder: is this the ONLY "reasonable" function on rationals which,
> when restricted to integers, coincides with the usual definition of gcd?
>

Not sure, but this seems relevant.

http://trac.sagemath.org/sage_trac/ticket/10771

-- 
Jens Axel Søgaard
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] feature request: gcd, lcm for rationals

2011-12-09 Thread Jens Axel Søgaard
One definition of greatest common divisor in a ring R is:
  d is a greatest common divisor of x and y when:
   i)  d divides both x and y
  ii)  If e is a divisor of both x and y, then d divides e

Now let's consider the ring Q. Since Q is a field, 1 divides all elements.

This implies that 1 is a greatest common divisor of any non-zero x and y.
( ad i) 1 is a divisor of both x and y
  ad ii) 1 is a divisor of e )

It is therefore not obvious that gcd should be extendend as you suggest.
But maybe we can finde another name for the operation?

/Jens Axel


2011/12/7 David Van Horn 

> It would be nice if gcd and lcm were extended to rational numbers, which
> seems in-line with Scheme's philosophy (but not standards) on numbers.
>
> (define (gcd-rational . rs)
>  (/ (apply gcd (map numerator rs))
> (apply lcm (map denominator rs
>
> (define (lcm-rational . rs)
>  (/ (abs (apply * rs))
> (apply gcd-rational rs)))
>
> David
> __**___
>  For list-related administrative tasks:
>  
> http://lists.racket-lang.org/**listinfo/dev<http://lists.racket-lang.org/listinfo/dev>
>



-- 
-- 
Jens Axel Søgaard
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Roogle?

2011-08-05 Thread Jens Axel Søgaard
2011/8/5 Stephen Chang 

For online, full-text search, couldn't one just use google and add
> "site:docs.racket-lang.org" to the query?


The Google stemmer is well-suited for natural languages.
It sucks for Scheme/Racket identifiers.

Try for example to find cons* or list? .

/Jens Axel
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] intro videos

2011-07-13 Thread Jens Axel Søgaard
Great initiative. Already subscribed.

* the sound is good
* the resolution (except the first one) is great
* perhaps mention that option and command is called alt and mumble on
Windows
  (or add an annotation (using the YouTube editor) to the video, so you
don't have to reshoot)
* If you are using ScreenFlow to record the videos, you could let
  it show the keyboard shortcuts.
* the short length is good

Do you happen to have a tablet? If so you could use together with OmniDazzle
to write on top of the DrRacket screen.

See for example
http://www.youtube.com/watch?v=TVc2tmsZfFg
where Paul Anderson uses it to write on top of a Keynote presentation.

Keep 'em coming.
-- 
Jens Axel Søgaard


2011/7/13 John Clements 

> Frustrated by what I'm seeing on khanacademy.org, I've now recorded 8
> *short* videos on getting started programming in DrRacket.
>
> http://www.youtube.com/playlist?list=PLD0EB7BC8D7CF739A
>
> It gets through about half of the first page of HtDP 2e. I'm trying to
> stress those things--interface details, understanding error messages--that
> are a better fit for video.
>
> Comments welcome.
>
> John
>
>
> _
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/dev
>



-- 
-- 
Jens Axel Søgaard
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] The sample in Help caused an error

2011-05-27 Thread Jens Axel Søgaard
Hi,

Look at the bottom left corner of the DrRacket window.
It should say "Determine language from source".

-- 
Jens Axel Søgaard


2011/5/27 Yingjian Ma :
> Hi All,
>
> I tried to run the code from the Help.  It said: module: name is not
> defined, not a parameter, and not a primitive name.  #lang caused the
> problem.  How can I fix it?  Thanks a lot.
>
> #lang web-server/insta
> (define (start request)
>   (response/xexpr
>    '(html
>  (head (title "My Blog"))
>  (body (h1 "Under construction")
> _
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/dev
>



-- 
--
Jens Axel Søgaard

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] planet-version follies with old planet packages

2011-05-16 Thread Jens Axel Søgaard
011/5/17 Robby Findler :
> Oh, okay I'm caught up now and, as far as I can tell, the gzip.plt
> package needs to be updated. It has this:
>
>  (define required-core-version "400.0")
>
> in the info.ss file:
>
>  http://planet.racket-lang.org/package-source/soegaard/gzip.plt/2/0/info.ss
>
> and I think that needs to be this instead:
>  (define required-core-version "4.0")

I picked at random one of my other packages "digest", and in its info.ss
is says:

(define required-core-version "369.8")

And that seems to work fine:

Welcome to DrRacket, version 5.0.99.6--2011-01-12(99d1cda/a) [3m].
Language: racket; memory limit: 256 MB.
> (require (planet "digest.ss" ("soegaard" "digest.plt" 1 2)))
> (bytes->hex-string (md5-bytes #"abc"))
"900150983cd24fb0d6963f7d28e17f72"

So I am a little confused.

Is it only the 4xx series, that where the form "400.0" doesn't work?

> I just grepped thru the source and, unless someone stuck a newline in
> the required-core-version spec, this is the only package on planet
> that has this problem.
>
> Jens Axel: do you have time to upload a version (2 1) of the gzip
> package that updates the required-core-version field? (I hope that's
> all that's needed?)

I'll put it on my todo.

-- 
Jens Axel Søgaard

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Memory consumption of Racket

2011-04-23 Thread Jens Axel Søgaard
2011/4/22 Nevo :
> hi
>   My attempt on porting Racket interpreter to iOS has been for a while and
> I've been able to run interpreter on both iOS device as well iOS simulator.

Great news.

> Right now, it runs perfectly on iOS simulator, but lack of satisfaction on
> device. The reason is for those devices like iPad/iPhone or Android, the
> memory for standalone application is always constrained, and even a single
> "hello world" evaluation would easily put the whole app runtime to death,
> per my test.

I am curious which iPhone and which iPad?

For the non-iPad owners here are a few (unofficial) specs, so you
have a rough idea of how much memory the iDevices have:

Internal RAM for:
  iPad 2512MB
  iPad 1256MB

  iPhone 4 512MB
  iPhone 3GS256MB
  iPhone 3G      128MB
  iPhone   128MB

-- 
Jens Axel Søgaard

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] A curious question about quote

2011-01-26 Thread Jens Axel Søgaard
2011/1/26 J. Ian Johnson :
> Hello all. I have a historical question about quoted constants. Does anyone 
> know why '1 = 1?
> My intuition is that this is an artifact of conflating quote with list 
> constructors. Is that indeed the case?

Depends on what you think of, when you say "conflating quote with list
constructors",
but my first reaction was to say no.

An expression of the type:  quote followed by the written
representation of a value v
should evaluate to a value equal (in the sense of equal?) to v.

More succintly:  ' evaluates to a
value equal? to v

Since the written representation of the value 1 is 1, the expression
'1 will evaluate to 1.

Since the written representation of a list with elements 1 and 2 are
(1 2), the expression
'(1 2) will evaluate to a value equal? to the value resulting from an
evaluation of (list 1 2).

Since ' is syntactic sugar for (quote ), the expression
  '('1 '2) is equivalent to the expression '((quote 1) (quote 2)).
That expression evaluates to a value equal? to the value resulting
from the expression
  (list (list 'quote 1) (list 'quote 2))
which explains your first example:

  >> (equal? '('1 '2) '(1 2))
  > #f

-- 
Jens Axel Søgaard
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] How about adding this simple list-shuffling procedure to racket?

2010-11-14 Thread Jens Axel Søgaard
2010/11/12 Neil Toronto :
> Jon Rafkind wrote:
>> On 11/12/2010 02:25 PM, Eli Barzilay wrote:
>>>
>>> Any objections to `shuffle' in `racket/list'?
>
> No objections here. I will almost surely use this function in the future.
>
>> Dumb question but is this different from `shuffle-list' from games/cards ?
>
> Yes. The one in games/cards takes multiple shuffles to actually shuffle the
> list. I think it's supposed to mimic physically shuffling a deck.

Several shuffles are needed in order to make the the distribution uniform.
If I recall correctly, Knuth, writes that you need 7 shuffles.

-- 
Jens Axel
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] `cond' / `when' / `unless' / etc bodies

2010-10-10 Thread Jens Axel Søgaard
2010/10/10 Eli Barzilay :
> I like mixing definitions and expressions -- maybe the bodies of
> `cond' etc should also allow it?

In

>  (define (foo x)
>    (when (even? x) (define x (add1 x)) (printf "increment\n"))
>    x)

is the scope of the definition (define x ...) the entire body of foo ?

-- 
Jens Axel Søgaard
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Need a little git help

2010-08-05 Thread Jens Axel Søgaard
2010/8/5 Robby Findler :

> They are generated from a script, but their output differs a little
> bit based on the platform that you run on so they are checked in (and
> not generated during the doc build process, but manually).
>
> You should be able to run image-gen.rkt to generate new ones, if you
> change the docs, tho, no? (I can re-run them on a mac, which generally
> seems to produce the best output after you push your changes.)

I ran the script (on a mac), so the images ought to be ok.
But please check I didn't break anything in the docs.

/Jens Axel
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Need a little git help

2010-08-05 Thread Jens Axel Søgaard
Hi Carl,

I downloaded the images I had deleted before. That wasn't enough.
I think the problem was that one needs to commit after adding files.
(I'm new to git :-) )

/Jens Axel
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Need a little git help

2010-08-05 Thread Jens Axel Søgaard
2010/8/5 Carl Eastlund :
> What does "git status" currently tell you?

See below.

It seems the images in

collects/teachpack/2htdp/scribblings/img/

are tracked by git, which means that they are not generated
automatically (I thought they were).

I am still a little unsure how to proceed. Any advice?

/Jens Axel

80:plt soegaard$ /usr/local/git/bin/git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 11 different commit(s) each, respectively.
#
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#   new file:   collects/teachpack/triangle-xxx.png
#
# Changed but not updated:
#   (use "git add/rm ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#   modified:   collects/teachpack/2htdp/scribblings/image-toc.rkt
#   deleted:collects/teachpack/2htdp/scribblings/img/2353974cf1b.png
#   deleted:collects/teachpack/2htdp/scribblings/img/24b86203f5.png
#   deleted:collects/teachpack/2htdp/scribblings/img/2751bdfe579.png
#   deleted:collects/teachpack/2htdp/scribblings/img/2a03b18c0c.png
#   deleted:collects/teachpack/2htdp/scribblings/img/2bed4c99df8.png
#   deleted:collects/teachpack/2htdp/scribblings/img/2c15acb26ba.png
#   deleted:collects/teachpack/2htdp/scribblings/img/2c93aecb2b5.png
#   deleted:collects/teachpack/2htdp/scribblings/img/2c98838ff0.png
#   deleted:collects/teachpack/2htdp/scribblings/img/8aebbc110e.png
#   deleted:collects/teachpack/2htdp/scribblings/img/f488ae4f9e.png
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#   collects/teachpack/2htdp/scribblings/image.html
#   collects/teachpack/2htdp/scribblings/img/11f41037210.png
#   collects/teachpack/2htdp/scribblings/img/16c877168cb.png
#   collects/teachpack/2htdp/scribblings/img/185481b843d.png
#   collects/teachpack/2htdp/scribblings/img/1aea72997cc.png
#   collects/teachpack/2htdp/scribblings/img/1c2ca686e5c.png
#   collects/teachpack/2htdp/scribblings/img/1ce2f057282.png
#   collects/teachpack/2htdp/scribblings/img/206013002a2.png
#   collects/teachpack/2htdp/scribblings/img/2271196b15b.png
#   collects/teachpack/2htdp/scribblings/img/22fbf40600e.png
#   collects/teachpack/2htdp/scribblings/img/28083dbe539.png
#   collects/teachpack/2htdp/scribblings/img/28fbf34134c.png
#   collects/teachpack/2htdp/scribblings/img/292cf6346d5.png
#   collects/teachpack/2htdp/scribblings/img/2a3953f3712.png
#   collects/teachpack/2htdp/scribblings/img/2a876662e0e.png
#   collects/teachpack/2htdp/scribblings/img/2d67c4219ef.png
#   collects/teachpack/2htdp/scribblings/img/3a33de5a32.png
#   collects/teachpack/2htdp/scribblings/img/3c0f55df6a.png
#   collects/teachpack/2htdp/scribblings/img/6f8f1b6543.png
#   collects/teachpack/2htdp/scribblings/img/e2d39b3ee5.png
#   collects/teachpack/2htdp/scribblings/img/e2d39b92b5.png
#   collects/teachpack/2htdp/scribblings/img/eb983f1874.png
#   collects/teachpack/2htdp/scribblings/racket.css
#   collects/teachpack/2htdp/scribblings/scribble-common.js
#   collects/teachpack/2htdp/scribblings/scribble-style.css
#   collects/teachpack/2htdp/scribblings/scribble.css
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] Need a little git help

2010-08-05 Thread Jens Axel Søgaard
Hi All,

I have implemented a few triangle functions for the 2htdp teachpack
and want to push the changes.

I get the following:

80:plt soegaard$ /usr/local/git/bin/git push origin master
To pltgit:plt
 ! [rejected]master -> master (non-fast-forward)
error: failed to push some refs to 'pltgit:plt'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

It says I should merge, so I try this:

80:plt soegaard$ /usr/local/git/bin/git merge origin
error: Your local changes to 'collects/teachpack/triangle-xxx.png'
would be overwritten by merge.  Aborting.
Please, commit your changes or stash them before you can merge.

The file triangle-xxx.png is one that I added locally.

What shall I do to merge and/or push?

--
Jens Axel Søgaard
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] P4P: A Syntax Proposal

2010-07-31 Thread Jens Axel Søgaard
2010/7/31 Eli Barzilay :

> There's a whole bunch of these things (in CL and Scheme), and IIRC,
> Jens had something very well doone recently -- but they all suffer
> from requiring some ugly wrapper syntax around them.

Indeed. In order to keep the wrapping at a minimum I contemplate
hijacking "strings starting with $", that is, if a string starts with $ then
the remaining part of the string is parsed as an infix expression.
I came to my senses eventually.

http://planet.racket-lang.org/package-source/soegaard/infix.plt/1/0/planet-docs/manual/index.html

-- 
Jens Axel Søgaard
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] discussion of the release

2010-06-09 Thread Jens Axel Søgaard
2010/6/9 Sam Tobin-Hochstadt :

>  4. We should have a "Try Racket in the browser" link, like this:
> http://tryruby.org/

Perhaps the IRC-bot thingie could be used as a starting point?

-- 
Jens Axel Søgaard
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev