The following code works:
```
datatype Maybe<T> = None | Some(v:T)
datatype B = B(b:Maybe<B>)
```
However, the variation below causes the error "because of cyclic dependencies among constructor argument types, no instances of datatype 'B' can be constructed":
```
datatype Maybe<T> = Some(v:T) | None
datatype B = B(b:Maybe<B>)
```
```
datatype Maybe<T> = None | Some(v:T)
datatype B = B(b:Maybe<B>)
```
However, the variation below causes the error "because of cyclic dependencies among constructor argument types, no instances of datatype 'B' can be constructed":
```
datatype Maybe<T> = Some(v:T) | None
datatype B = B(b:Maybe<B>)
```