Carp/core
scottolsen d93985d7e7 Make doc take a rest parameter of strings
Carp preserves tabulation and other whitespace in strings, as it should.
This sometimes results in awkward code indentation when it comes to long
doc strings that exceed 80 characters. Often, one has to continue the
string on a newline, but needs to avoid adding tabs to prevent Carp from
rendering them in the output.

This change alters the behavior of doc to take a series of strings as a
rest parameter instead, allowing for neater organization in the source,
for example, after this change the following long doc string for
compose:

~~~
    "Returns the composition of two functions `f` and `g` for functions of any
arity; concretely, returns a function accepting the correct number of
arguments for `g`, applies `g` to those arguments, then applies `f` to the
result.

If you only need to compose functions that take a single argument (unary arity)
see `comp`. Comp also generates the form that corresponds to the composition,
compose contrarily evaluates 'eagerly' and returns a computed symbol.

For exmaple:

```
;; a silly composition
((compose empty take) 3 [1 2 3 4 5])
;; => []

(String.join (collect-into ((compose reverse map) Symbol.str '(p r a c)) array))
;; => 'carp'

;; comp for comparison
((comp (curry + 1) (curry + 2)) 4)
;; => (+ 1 (+ 2 4))
```"
~~~

becomes:

~~~
       "Returns the composition of two functions `f` and `g` for functions of any"
       "arity; concretely, returns a function accepting the correct number of"
       "arguments for `g`, applies `g` to those arguments, then applies `f` to the"
       "result."
       ""
       "If you only need to compose functions that take a single argument (unary arity)"
       "see `comp`. Comp also generates the form that corresponds to the composition,"
       "compose contrarily evaluates 'eagerly' and returns a computed symbol."
       "```"
       ";; a silly composition"
       "((compose empty take) 3 [1 2 3 4 5])"
       ";; => []"
       ""
       "(String.join (collect-into ((compose reverse map) Symbol.str '(p r a c)) array))"
       ";; => 'carp'"
       ""
       ";; comp for comparison"
       "((comp (curry + 1) (curry + 2)) 4)"
       ";; => (+ 1 (+ 2 4))"
       "```")
~~~

And the output remains the same; this just enables better alignment in
the source file.

The strings passed to doc are newline separated by default, but one can
circumvent this behavior by passing a bool along with the string as
follows:

~~~
(doc foo
     ("My amazing doc " false)
     "continues on one line."
     ""
     "And then another.")
~~~

The above doc string will result in the following output:

~~~
My amazing doc continues on one line.

And then another.
~~~

Of course, the original behavior of doc also remains valid, so if one
prefers to use the old indentation-mixed single string format, one still
can!

This change also reformats the doc strings in macro to utilize the new
rest parameter and make the source a bit neater.
2020-10-01 11:41:05 -04:00
..
Array.carp core: move range into array ext and add unsafe-range 2020-05-21 15:23:29 +02:00
ArrayExt.carp core: update dcostring for range-or-default 2020-05-24 12:51:11 +02:00
Bench.carp core: move elapsed_time into bench module 2020-01-27 16:56:22 +01:00
Binary.carp Move Byte Order type outside of the Binary module 2020-03-20 19:02:55 -04:00
Bool.carp core: add Bool.zero 2020-06-23 12:26:53 +02:00
Byte.carp core: make bit-* interfaces 2020-07-08 21:11:28 +02:00
carp_bench.h core: move elapsed_time into bench module 2020-01-27 16:56:22 +01:00
carp_binary.h all: various long fixes 2020-04-23 21:50:30 +02:00
carp_bool.h core: do not have short functions on single lines 2019-10-30 11:07:32 +01:00
carp_byte.h core: fix #688 by using the correct formatting macros\n\n(and pray that windows does c99) 2020-02-21 12:28:34 +01:00
carp_char.h Merge 2020-05-11 16:10:35 +02:00
carp_debug.h Preserve includes order in generated output. 2019-10-03 00:23:27 +02:00
carp_double.h Long type to ensure longs are actually 64 bits. 2020-04-22 10:40:06 +02:00
carp_float.h core: do not have short functions on single lines 2019-10-30 11:07:32 +01:00
carp_int.h core: do not have short functions on single lines 2019-10-30 11:07:32 +01:00
carp_io.h Hopefully portable and simple get-line. 2020-05-11 16:08:40 +02:00
carp_long.h Detect __builtin_x_overflow() based on __GNUC__ macro. 2020-05-23 19:03:07 +02:00
carp_memory.h all: various long fixes 2020-04-23 21:50:30 +02:00
carp_pattern.h Remove braces so different clang-formats output the same. 2020-05-30 09:32:50 +02:00
carp_safe_int.h Detect __builtin_x_overflow() based on __GNUC__ macro. 2020-05-23 19:03:07 +02:00
carp_stdbool.h core: remove stdbool dependency 2018-11-17 15:42:36 +01:00
carp_stdint.h all: various long fixes 2020-04-23 21:50:30 +02:00
carp_string.h macros: add doto and doto-ref 2020-08-25 11:58:20 +02:00
carp_system.h core: use static array for args 2020-08-24 11:20:52 +02:00
carp_utf8.h Roll our own UTF-8 support. 2020-05-12 01:14:02 +02:00
Char.carp Add some more calls to implement to make tests pass 2020-05-10 13:32:22 -04:00
Collection.carp Add some more calls to implement to make tests pass 2020-05-10 13:32:22 -04:00
Color.carp Add some more calls to implement to make tests pass 2020-05-10 13:32:22 -04:00
Control.carp Fix signature of Control.iterate-until 2020-05-20 23:40:46 -04:00
Core.carp Load the Opaque type 2020-06-17 18:16:58 -04:00
core.h Don't include windows.h on mingw. 2020-05-12 01:13:36 +02:00
Debug.carp core: fix Debug.trace for new evaluator 2020-05-16 12:46:05 +02:00
Double.carp Add remaining implements declarations 2020-05-10 22:53:35 -04:00
Dynamic.carp Implement load-stack. 2020-06-28 19:53:43 +02:00
Filepath.carp core: make subarry/substring slice 2020-02-11 09:09:30 +01:00
Float.carp core: add implements for FloatRef comparators 2020-05-12 22:45:29 +02:00
Format.carp Implement private 2020-06-19 10:30:55 -04:00
Generics.carp core: fix typo in docs for Generis.approx 2020-05-13 16:45:11 +02:00
Geometry.carp Generics no longer propagated. 2019-09-09 22:08:50 +02:00
GLFW.carp Added some of GLFW constants 2020-06-18 23:19:31 +02:00
Heap.carp Fix all nth usage 2019-10-31 06:23:23 -03:00
Int.carp core: make bit-* interfaces 2020-07-08 21:11:28 +02:00
Interfaces.carp core: make bit-* interfaces 2020-07-08 21:11:28 +02:00
Introspect.carp Index arguments from 0 in with-copy 2020-08-18 22:52:56 -04:00
IO.carp Merge 2020-05-11 16:10:35 +02:00
Long.carp core: make bit-* interfaces 2020-07-08 21:11:28 +02:00
Macros.carp Make doc take a rest parameter of strings 2020-10-01 11:41:05 -04:00
Map.carp Add some more calls to implement to make tests pass 2020-05-10 13:32:22 -04:00
Maybe.carp core: make NULL Ptr a instead of a 2020-05-18 23:21:16 +02:00
Opaque.carp Update Opaque docs; fix typos 2020-06-18 09:57:28 -04:00
OpenGL.carp Add header/lib for OpenGL on each platform. 2020-06-29 11:57:06 +02:00
Pattern.carp Merge pull request #769 from scolsen/implement-prim 2020-05-12 21:45:29 +02:00
Phantom.carp core: add docs for phantom 2020-06-17 19:06:49 +02:00
Pointer.carp core: add String.to-bytes 2020-05-13 17:15:26 +02:00
Random.carp Add an implements primitive, update core 2020-05-09 12:59:47 -04:00
Result.carp Add some more calls to implement to make tests pass 2020-05-10 13:32:22 -04:00
SafeInt.carp Added --compile-fast to compile with tcc. 2020-05-21 20:04:54 +02:00
SDL_gfx.carp Refactored flags handling (add-pkg). 2019-06-17 09:02:34 +02:00
SDL_image.carp Merge 2020-05-11 16:10:35 +02:00
SDL_mixer.carp Merge 2020-05-11 16:10:35 +02:00
SDL_ttf.carp Merge 2020-05-11 16:10:35 +02:00
SDL.carp Merge pull request #769 from scolsen/implement-prim 2020-05-12 21:45:29 +02:00
SDLHelper.h all: fixes for new evaluator 2020-04-17 11:58:28 +02:00
Sort.carp core: add sort flavors with custom comparators 2018-11-13 11:11:21 +01:00
StaticArray.carp Add remaining implements declarations 2020-05-10 22:53:35 -04:00
Statistics.carp Fix all nth usage 2019-10-31 06:23:23 -03:00
StdInt.carp core: make bit-* interfaces 2020-07-08 21:11:28 +02:00
String.carp core: add String.from-bytes 2020-07-08 21:56:14 +02:00
System.carp core: use static array for args 2020-08-24 11:20:52 +02:00
Test.carp test: add assert-ref-equal, assert-just, and assert-nothing 2020-05-12 14:53:42 +02:00
Tuples.carp core: autogenerate Tuple types and document 2020-05-24 11:49:27 +02:00
Unsafe.carp core: rearrange templates 2020-05-12 21:58:40 +02:00
Vector.carp Add remaining implements declarations 2020-05-10 22:53:35 -04:00