typed-compose/README.md

90 lines
3.1 KiB
Markdown

# Utilities for composing functions in Typed Racket
[Typed Racket](https://docs.racket-lang.org/ts-guide/)'s `compose`
only takes two arguments, because in general it is difficult to
specify that the return types and the argument types should be the
same for two successive functions in the argument list. This package
defines some further utilities to allow `compose`-ing more than two
functions more comfortable in Typed Racket.
This package is distributed under the [GNU GPLv3
licence](https://www.gnu.org/licenses/quick-guide-gplv3.html).
## Contributing
Contributions, comments, bug reports, etc. are very welcome!
For [ethical
reasons](https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish),
I prefer not to host this package on
[GitHub](https://en.wikipedia.org/wiki/GitHub#Acquisition_by_Microsoft).
Luckily, Git allows creating and submitting patches by E-mail very
easily. Here is a simple workflow that you can use to contribute to
this library.
### Submitting patches
Start by checking out this repository:
```
git clone https://git.marvid.fr/scolobb/typed-compose.git
cd typed-compose
```
Start a new branch `my-contribution` for you contribution:
```
git checkout -b my-contribution
```
Hack hack hack, do a couple commits, maybe take a look at a list of
the commits your branch `my-contribution` contains:
```
git log --pretty=oneline master..my-contribution
```
Now create one patch file for every commit added to branch
`my-contribution`, which is new with respect to `master`:
```
git format-patch master
```
This should produce one patch file for commit,
e.g. `0001-Commit-1.patch`, `0002-Commit-2.patch`, etc. Send all of
these files to me to `scolobb` at `marvid.fr`, or to any other address
you think you can contact me at. I will give you feedback and we will
work together towards getting your changes in, which is a fancy way of
saying that I will probably take in your changes without too much
hassle if they follow some very basic style guidelines. Speaking of
which:
### Style guidelines
When submitting changes, try to make them as similar as possible in
style to the existing code, which approximately follows the style used
across the Racket code base. If you use Emacs with Racket Mode or
DrRacket, you should be fine with default settings.
When adding new code, please consider updating the Scribble
documentation `typed-compose.scrbl` accordingly. I believe that good
documentation is more important than good code, because with good docs
you can at least know how to fix the whole thing.
## License
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but
**without any warranty**; without even the implied warranty of
**merchantability** or **fitness for a particular purpose**. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see
[https://www.gnu.org/licenses/](https://www.gnu.org/licenses/).