soegaard
It is a tradition here to make woven paper christmas hearts. It's a fun activity for children and adults alike. This web site show both classical hearts - but also allows you to design your own.
Consider appending two strings in Scheme:
(string-append s1 s2)
Appending two strings in Scheme: (vector-append v1 v2)
Since the type is present in the function name,
it would be redundant to include it in the variable name. > `(1 ,@2)
'(1 . 2)
This is a pair. The notations is called "dotted pair". #lang racket
(let ((a (read (open-input-string "#0=(0 . #0#)"))))
(display (car a)))
I think the problem is that `read` / `write` support shared data constructed using `shared`. But programs (read by `read-syntax` are not allow to have cycles.https://users.cs.northwestern.edu/~robby/logos/
The skull didn't last long.
Well, getting the interaction between modules and syntax transformations (macros) right is not an easy task.
"Composable and Compilable Macros: You Want it When?" Matthew Flatt http://dl.acm.org/authorize?24908
#i is the prefix for inexact
#e is the prefix for exact
So `#e0.1` is exact 0.1 which means it will be read as an exact fraction 1/10
and `#i0.1` will be read as a floating point number.The `i` in `8i` is the imaginary unit. The `1@1` is the polar notation for complex numbers.
The `10#` is a compatibility remain (the Scheme authors wanted a way to see how many signifant digits were known. In `10#` there 2. So `#` stands for "some digit". In most implementations this is read as 0. More details at [1]
An `#` followed by a list datum is read as a vector. Thus `#()` is an empty vector and `()` is an empty list.
[1] https://stackoverflow.com/a/10936403/23567
Complicated? Well, to support both inexact (floating point) and exact numbers (bignums and fractions) it makes sense to have `#i` and `#e` to explicitl choose. The default is (more or less): numbers with . are inexact the others are exact.
The GUIs actually use the underlying native GUIs thanks to the dynamic FFI. The goal is to have a cross platform GUI. Your program runs on macOS, Linux and Windows without any problems.
But if there is some gui feature, that is only available on one platform, you won't find it in the builtin gui libraries. However, you can always add platform specific functionality yourself.
And has been for a long while.
But it's important to note, at you need editor support for rendindenting blocks easily and correctly.
FWIW choosing `#:foo` over, say, `foo:` was due to backwards compatibility. In Scheme and Racket `foo:` is a legal identifier, so there might have been programs that stopped working, if `foo:` suddenly was a keyword.
I can't remember the details, but I recall that Arc was pinned to an older version of Racket and didn't benefit from improvements to BC and then later to CS.
But ... be aware that the Arc interpreter is much more dynamic than Racket, so in general normal Racket programs are more efficient than Arc programs.
In Racket:
(for ([x xs]) (displayln x))
This works for `xs` being a sequence, which includes lists and vectors.Making the type explicit generates faster code:
(for ([x (in-list xs)]) (displayln x))
(for ([x (in-vector xs)]) (displayln x)) (local.get 0)
(local.get 1)https://raw.githubusercontent.com/soegaard/webracket/refs/he...
As a small example, here is a definition of `$car` which extracts the first value from a pair.
(func $car (type $Prim1)
(param $v (ref eq))
(result (ref eq))
(if (result (ref eq))
(ref.test (ref $Pair) (local.get $v))
(then (struct.get $Pair $a (ref.cast (ref $Pair) (local.get $v))))
(else (call $raise-pair-expected (local.get $v))
(unreachable))))Show HN: Command line tool for viewing files in color
https://soegaard.github.io/peek/
The tool `peek` show files in color in the terminal. A wide range of popular programming language and file types are supported.Today I added support for binary files inspired by the HN post on colors in hex editors.Each supported programming language is backed by its own (reusable) lexer. The lexer provides a stream of tokens to the colorer. Using streams means that you will see the top of...
https://soegaard.github.io/peek/#%28part._binary-files%29
For me the key insight is that similar values should get similar colors. And since Fx and 0x are "similar" the color palette should be cyclic.
https://andykeep.com/pubs/dissertation.pdf
Also see the this text: