Rebmake uses TUPLE!s and PATH!s creatively when specifying lists of files to build:
files: [
foo.c
bar.c [<msc:/WD1337> <gcc:-Wno-bad-warning>] ; options for this file
subdir/ -> [
baz.c [
#no-c++
; You can put more compiler settings for this file here
]
mumble.c
]
frotz.c
]
I'm turning my attention toward making this even more powerful, and there's a lot of potential.
But Sometimes, You Build These Specs With Code
I was looking at this, and had a bit of a thought about how spread
looks like it's in a "sea of intertness"
depends: compose [
(switch platform-config.os-base [
'Windows [
spread [
stdio-windows.c
readline-windows.c
]
]
] else [
spread [
stdio-posix.c
readline-posix.c
]
])
]
You're looking at this list of files, that you're used to seeing dialected. So you half expect it to be like:
spread/ -> [ ; would be like spread is a directory
stdio-windows.c
readline-windows.c
]
spread [ ; so this looks like a "bug"
stdio-windows.c
readline-windows.c
]
This gave me a thought, though. Since the block is in an evaluative context, why not give a hint to help remind readers that it is?
depends: compose [
(switch platform-config.os-base [
'Windows [
spread '[
stdio-windows.c
readline-windows.c
]
]
] else [
spread '[
stdio-posix.c
readline-posix.c
]
])
]
It gives you a little hint to remind you that you're looking at something evaluative. While you could use quotes as a signal in a dialect (to put a generic mark on something?) this wouldn't be too common, so I think this might be a good tool when composing dialect code to know that's what you're doing.
(Of course, for binding reasons, you often want to quote blocks anyway...and that's becoming more important with time!)