[style-guide] when expressions in match clauses
- Dominant language
- F#
- Stars
- 557
- Forks
- 149
- Avg merge
- 4d 13h
- Merged PRs (30d)
- 2
Description
Hello,
The current style guide does not give any guidance on where to put the `when` expression in match clauses.
Some examples:
```fsharp
match x with
| Y y when isOdd y -> "y is odd"
| Z z -> z
```
In small expressions, it makes sense to put the `when expr` after the pattern.
There is a bit of a problem when the `when expr` is getting large or contains multiple lines.
[Some samples](https://fsprojects.github.io/fantomas-tools/#/fantomas/preview?data=N4KABGBEDGD2AmBTSAuKBbBBXANosAYrLGALwA6ATuQHYQSby74BCAhpWVbfb33gBcwAIywBLHPACqAZzYBzfB3kBJGgDNYMrtTp99vdGwHQAFmABuAOhUyAsonTDElADSWbMtTIFsa0RAcnF3drABlYeTFoNhwAOTZ0RFCrABExGQAHHDYATwSksAB3MQFTbj0DAwB6arAAeUp4MRoOXLB1LH8BMVgabVhOC1isRBkKqqqAHw7YmWSwAH13ZbBWwqLTRBoJyb2aWCEAClM2GQBBAQFKMVEBRAAeACVEAEdxSkQARSxYsXUxIh4OdoAEZBcrjc7ogAHwec6ZTIcbYCACi-hwWha8nRPQEuSsl2utyw9xkAEowABaGG7PZVdb4ADUYHIkFZ7JZSMo50o8nGunpfFqDSaLTaYB8xmiYCSwUoA04ZWx2iOAH5KWVjGBPu8xJ8OrgcO13n8AUCwGxQWMBTwhfQZqsne5GdS4a6uRxefyKhUjCZzJoSCUyhUZls2PAACqwADW2zAKDQnx8xS2O0F9COGXqmRcxkGjQA0ohckVBvAwBHo3HtnSIAAyBtgMIZARWRAADzbqs6dFjbqriEjMfjNCso%2B2ak0E9rNAK%2BFIYFjlPjZYrUZuFjEbHJ9Zp9cEOr8ijIYEUAieJ8QLEQAiKiATbLX5aabKHI7nH5rY8Pd7ALSaDodr6JuYjbmwVgAMKfMY%2BBHCW65NCcw4-ts5KUpQ171rwUxwq2PhWJknx5jQ8AqPc6AdLAXTRluO71heYEQQQlCwOgk79FGWzoAAyogOAWGMlo4DgnHaCmQiAbAvq6EeADi2wIpkYBHAENAWGg6kWJS0DyKI6hgI%2BGmqeo7jqPi7j4soMjuNAWCUDcQLerZsqUvM7wCcBehHvIZ7aVY8i7P6ZimVZuQ2XZDlOcCfIUsUpTlJmIoRHG1FKmwEgxKJYACCQAgOXQLR5SIWH%2BEldozEcqKdsRVgAGqxKpFgrCs5KtUslKbHWmb6CF5gEQI5zgrA0BWNcuQEC0lbyFYww4C86ioq8lhGds1gtDQLiNTg2ghhVlR8DMvHsfBsbTW1bo4foRwHEI1i2FBfQ%2BJQWDQHlnBNtd%2Bgit1dDCGVZhUtlODYrKd6mAge34OgWCpqcQm5VsOpiPIphCPieZgNyiR3i4tqHVURz9cu00JaGvV7DMLCA6YUGxDgUGYjIDn4Isg7XKM336NTtP06JDhlAgqnOrlmSuaLiyUgelP2qpg1WHgNDyGUMjLecZFEFhokAEymV0uXtAIKk0obebLeIFjnobqnoLGUa5NyDtixhhs2WLFKUl9ss1HUsOps4RmdlaQgAMSRQB8gHDcyu5Vg2Rg1SxT4F0BXZPg-xrI%2BSCVs4mJFNzvBHEeHClLk04kBQPuTCT51keTB1y2AvN%2BGY-OM8zrOWjc%2BIV4XPNgDTrd0wzguQ5WRyl73GiwB1kuXYOU-lzP-f0EvFdWGE2wq%2BYS72Y5gKxfym-bxTIGTF7Dar6pABUaz5ZlOAg2ANFCLAhldgEmQ9H0VZ%2BPAeA3BGRMFYMAN89zVz4MTYwoUPKjBwCoKOgxsTongLxOAeYLhkXSDIGITRJRvHgQ3MALwCqUDoDMUhhV6qwDEJWU2nN8COkHOoOYiAMLcxmHEPo%2BBTasN2ogfctJIFHiOHXeA7gjCUBXGeQaw0ZCjSsACeus15qLWWqtYyG0aBbUoDtbQIpYiwXgO0MwiBoDxkrGwYQsBEYtDTAmeQvw3yQKOBA2gfpsB4EIN5QwXj8DyV8QYRgzAwAAAkgl7BCd4gAUpE%2B00T8BFniU3SYE1r6pN4C9YwWB0BM0BDQds-FKBCT0fjXoGZz6ZKblBMIKhURxCjIsOI5w7CokWLxBpTSoz1A6VGJ45woxSDsB01ETx6pjMWAAdTCQ0xYsywhhHqBk6pfAAAKTx6g9KgvUMIiwJlPF4ioeocQOlSDWWs%2BoTwoyolSCsuW%2B17n2hmCgNUYBUR4Heq9PiLhSlUPISgxygwapfx-nQM4QdQUOMqYTVZVRP6IG-lYBw4IFCICsKgmQUzEpPLhUcDZWz6g7L2Qco5JyzkXKuTc1Is5eLEmVm49xsK4X6BllUll%2BhWESH2hyTsfK2SQFcOAKA8wrgqlQGAAA2sKiAoB9CQAACSY2QGgSAxVBUyvoIq%2BaowJXSqqAABiFVUSAagkCFN4mIAAXsgY1BgAAsmqIAAF1NUAF87WyqdVAJVjsVVQHVZ6rVCqdX%2Bv1QYAAjEG3gkA7BsE7K2LaW9lZlA1VUAAHAa71rreAes1XKvgirlUSsgNseA9R1CJsQHS3IeA02FpDSMMN3qIA62jVq1BFaq31vlTgdQkBs3uqDQWmNvq8wlpsbAHAPbg2hr1S2sAABmdtEBTX9BcAIKarR4iICKKDLaM7eCMMHbm4d3qi1%2BoncQad7btVNvnVUe1K6oC8SRAEW8mhPhrI4Lje4lBD30GPfoHN9A828BHcG4tqrJ03vPY2nAuq0Dhv0AAVmfZAV9VobyIE-YgCID5KAxHmGoCwo1pR9AAxAIDfAQMQDA-QCDq6x3%2BsgDBgDd6EPNqqAANnQ5h99OHBiICkIiFwRHEAkbI2CyjswBEntA2e%2BVzGr1TvY-BxDUqF0AHY%2BNvuw7hpmZwZBPX6Jzd6gwZP8PmPJujimG1QagGx296muMGHTbprDH6hNBGcP%2B59VnEA2bAPRr1SmHOsevWpudSGF0AE4PMCYM1Oij-m2FBZC2ARjPrwtObg9FzTVQI1GoXRhvT5wLIuCeugIwMnqO8Fo8Fuzo6cuRec-l5DfAI1RpK-x-TQn%2BLoGiMlmglm0vAaHfmuDLXVNtfvTFwrbaetlYq5QAbQ3MQjefXV%2BgDWMtZYveO6DrW8tzYK5G5dS2sO8hotggSYhBt-tq69QL43T2TbC5e1VgaTucYfZGp9JW42dhUOobi2wPnzF4pDSgAhsXwFTc%2B%2B1WbXsKfe-Zz7AbClRdOx13gEa0OA-jdOMQnZcz5g%2BjVYiNoKkyZQ8jmjE3wNTYx2qrHs3fvzcjbxwnnYXhwCaHDhHC6kfpaa5Bln32lPtYXRGnTPO%2BcVjiLk3zFaKKOBkDJiNou0fNZZ7DHAPR92IC1v6P9Dtx3s407j%2BgEb3MlYV00OwuBDctGN4MU3LgZMwFOFhd6LhFglHh6YAdKPbM6-F4dzHAhscc7O-oCN8Wee8iwrkRog1BfB8R-T%2BrjOGPM8j6z6PlvXP6B1sVk1QPk95DT22JX8pVeUQ18%2BrXofGvh6Y%2BF-XLutom%2BMGby9xe-ul%2B6yaqvqfKCDSdwbiQrve9XE9%2BhswP6-eUAD3Q1N2umcfYL5Lht0uqg60WxX%2BNO1RgsGmtiDPMnM2b7z9vlju-R374MDrC7x-OwEC6O9Cp5%2ByKX-X5nsLtnjtrnqFujjvmzj9lbgujrADu-qkIcIpGiLVCmDIBUlfs%2BnTrfmAbrgXrllLjjjAQThXs7jPltCwJiBYkPBYneDIPUDQLxLjE9AhugJtgugFtgZlvnixvgXvoQQftzianELukbrePeMZObogKkDhi0KUBUhrPAD5vjKNnJq3nttwSprBgQbHtbq2nLqPqDFHJ-t0BUpalHDkp8DGGaiiORmwVUBwWoWLh3izrwU-vwS-nbgYX%2Bq0D0EJBEMrEoZQNIconIc9CodZo4e3tli4cdtodAQfoniQdPlWmEIkMIPAGwEzFiMrMIXuq7uES9gzm9lvuATwbEXwToQuouuXgYJAJTi4PdjYTgCWIitYYUmoEPOVAUZwftspkdjNlASXnwIuiPrURQX4LGFWhcGxLRMIT4ECFPt3ogJTqgRUk3gutti6qAVwffpoTHvEQYIukfmMRwF5p8DgtADcINj4UCFIDQBUtIdADkFhNJqlqoUUajiUbgWUQMXEUMbwIum-rUfUVcU0XSjMS9PHDWnWm8RER8WHl8RHg-pAX8UPsMXAbUS0ZkEDnXiruoOMTQJMa7usYVgasAVscUXfqUXsYPpzvoIusQbUeCdEAIHYAgLauwWNvCcFsKs6namqjIAQGgRKhwW6kAA)
My personal view on this is if you have a multiline `when` expression, you should probably refactor it to a partial active pattern and encapsulate your logic there.
Regardless, what advice should be given when this problem arises?
I'm interested in the position of the `when` keyword, newlines and/or indentations of the multiline expression and the position of the `->` arrow.
Thoughts @dsyme and community?
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.