summaryrefslogtreecommitdiff
path: root/doc/todo/type_level_OS_requirements/comment_6_b10cb4445eb2519c8b3f7f080c975113._comment
blob: 9741de20ee2917e785a83ab3364a0caf1b7bbc98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[[!comment format=mdwn
 username="joey"
 subject="""comment 6"""
 date="2016-03-09T15:01:05Z"
 content="""
I've added a prototype of `ensureProperty` that enforces at the type level
that the property it runs will work on an OS that's passed to it.

It was easier than I thought; I didn't turn out to need reification. Just
pass in the outer OS:

    ensureProperty
        :: (CannotCombineOS outeros inneros (IntersectOSList outeros inneros) ~ CanCombineOS)
        => OSList outeros
        -> Property (OSList inneros)
        -> IO ()
    ensureProperty outeros (Property inneros a) = a

At this point, I'm confident this can be rolled out into propellor;
there should be no big bumps in the road ahead.
"""]]