https://github.com/sim642/ppx_viewpattern
View patterns in OCaml
https://github.com/sim642/ppx_viewpattern
ocaml ppx ppx-rewriter ppxlib
Last synced: 3 months ago
JSON representation
View patterns in OCaml
- Host: GitHub
- URL: https://github.com/sim642/ppx_viewpattern
- Owner: sim642
- License: mit
- Created: 2022-02-27T21:24:40.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-03-15T10:31:51.000Z (4 months ago)
- Last Synced: 2025-03-15T11:19:59.345Z (4 months ago)
- Topics: ocaml, ppx, ppx-rewriter, ppxlib
- Language: OCaml
- Homepage:
- Size: 52.7 KB
- Stars: 11
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# ppx_viewpattern
[](https://github.com/sim642/ppx_viewpattern/actions/workflows/ci.yml)
[](https://github.com/sim642/ppx_viewpattern/releases)
[](https://opam.ocaml.org/packages/ppx_viewpattern)Transformation for view patterns in OCaml.
_Attempts to_ imitate [Haskell view patterns](https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/view_patterns.html).## Installation
```console
opam install ppx_viewpattern
```## Usage
In dune:
```
(preprocess (pps ppx_viewpattern))
```## Syntax
Use `[%view? pat when exp]` as a pattern to apply `exp` to whatever the pattern is matching and match the result of the `exp` application against `pat`.
Analogous to the Haskell view pattern `exp -> pat`.See [`example/`](example/) for example usage.
Supported in:
* `match ... with ...` cases,
* `function ...` cases,
* `fun ... -> ...` arguments,
* `let ... in ...` expression binding left-hand sides,
* `try ... with ...` cases,
* nested inside the `pat` and `exp` parts of a view pattern itself.### Caveats
A view pattern disables `redundant-case` and `partial-match` warnings for the corresponding `match`/`function`.Currently unsupported in:
- `let ...` definition left-hand sides (at top level or in modules).