# 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 in very easily. Here is a simple workflow that you can use to contribute to this library. ## Submit 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 it 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 `manual.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/).