diff options
| author | Joey Hess <joeyh@joeyh.name> | 2016-03-08 15:08:58 -0400 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2016-03-08 15:09:17 -0400 |
| commit | 4992b53724d6c4dec3899cd6c52163b4548abd7c (patch) | |
| tree | 28796f43c41495a3fd24701903759e6b7f73807e /doc | |
| parent | 798a86d098c725c21fafde203961ba0e2433f09c (diff) | |
document status
(cherry picked from commit 6d52245a574e65275f818d90839737f0074b045f)
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/todo/type_level_OS_requirements/comment_2_5a1c0c54db25b039eda28e213e1e6263._comment | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/doc/todo/type_level_OS_requirements/comment_2_5a1c0c54db25b039eda28e213e1e6263._comment b/doc/todo/type_level_OS_requirements/comment_2_5a1c0c54db25b039eda28e213e1e6263._comment new file mode 100644 index 00000000..27aaf0cd --- /dev/null +++ b/doc/todo/type_level_OS_requirements/comment_2_5a1c0c54db25b039eda28e213e1e6263._comment @@ -0,0 +1,43 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 2""" + date="2016-03-08T18:44:25Z" + content=""" +I've made a typed-os-requirements branch that has type-level +OS lists implemented. + +For example: + + *Propellor.Types.OS.TypeLevel> let l = (debian `combineSupportedOS` freeBSD ) `intersectSupportedOS` unixlike + *Propellor.Types.OS.TypeLevel> l + OSList [OSDebian,OSFreeBSD] + *Propellor.Types.OS.TypeLevel> :t l + l :: OSList + (IntersectOSList + '[] '['OSDebian, 'OSFreeBSD] '['OSDebian, 'OSBuntish, 'OSFreeBSD]) + +What this is lacking is type-level equality for OSList. +The complicated type above should be equivilant to `OSList '[OSDebian, OSFreeBSD]` + +So, this doesn't type check yet: + + foo :: OSList '[OSDebian, OSFreeBSD] + foo = (debian `combineSupportedOS` freeBSD ) `intersectSupportedOS` unixlike + + src/Propellor/Types/OS/Typelevel.hs:47:46: + Couldn't match expected type ‘IntersectOSList + '[] + '['OSDebian, 'OSFreeBSD] + '['OSDebian, 'OSBuntish, 'OSFreeBSD]’ + with actual type ‘'['OSDebian, 'OSFreeBSD]’ + In the expression: + (debian `combineSupportedOS` freeBSD) + `intersectSupportedOS` unixlike + In an equation for ‘foo’: + foo + = (debian `combineSupportedOS` freeBSD) + `intersectSupportedOS` unixlike + +Also, `intersectSupportedOS` should have an additional constraint, +to prevent it from generating an empty type-level list. +"""]] |
