diff options
| -rw-r--r-- | src/list/operation/higher/drop_while.h | 2 | ||||
| -rw-r--r-- | src/list/operation/higher/list_index.h | 2 | ||||
| -rw-r--r-- | src/list/operation/higher/take_while.h | 2 | ||||
| -rw-r--r-- | src/type.h | 6 | ||||
| -rw-r--r-- | test.cc | 4 | 
5 files changed, 11 insertions, 5 deletions
| diff --git a/src/list/operation/higher/drop_while.h b/src/list/operation/higher/drop_while.h index 1207020..8d013f9 100644 --- a/src/list/operation/higher/drop_while.h +++ b/src/list/operation/higher/drop_while.h @@ -13,7 +13,7 @@ template <  >  using DropWhile = Drop<  	typename utility::predicate_assurance< -		utility::predicate_negator<std::is_void>::template function, +		IsSize,  		Length<List>  	>::template assure<  		ListIndex< diff --git a/src/list/operation/higher/list_index.h b/src/list/operation/higher/list_index.h index bbf43ee..d665b82 100644 --- a/src/list/operation/higher/list_index.h +++ b/src/list/operation/higher/list_index.h @@ -29,7 +29,7 @@ template <  	typename                 Index  >  struct index_of_first<Predicate, void, Index> { -	typedef void type; +	typedef Boolean<false> type;  };  } diff --git a/src/list/operation/higher/take_while.h b/src/list/operation/higher/take_while.h index f9fc3aa..105e83c 100644 --- a/src/list/operation/higher/take_while.h +++ b/src/list/operation/higher/take_while.h @@ -13,7 +13,7 @@ template <  >  using TakeWhile = Take<  	typename utility::predicate_assurance< -		utility::predicate_negator<std::is_void>::template function, +		IsSize,  		Length<List>  	>::template assure<  		ListIndex< @@ -38,6 +38,12 @@ using IsEqualValue = Boolean<X::value == Y::value>;  template <typename X>  using IsTrue = IsEqualValue<X, Boolean<true>>; +template <typename X> +using IsBoolean = Eval<std::is_same<typename X::value_type, bool>>; + +template <typename X> +using IsSize = Eval<std::is_same<typename X::value_type, std::size_t>>; +  }  #endif  // TYPEASVALUE_SRC_TYPE_H_ @@ -922,13 +922,13 @@ static_assert(  static_assert(  	std::is_same< -		void, +		tav::Boolean<false>,  		tav::ListIndex<  			tav::Even,  			tav::List<tav::Int<1>, tav::Int<3>, tav::Int<5>>  		>  	>::value, -	"(list-index even? (list 1 3 5)) != void" +	"(list-index even? (list 1 3 5)) != #f"  );  // list find | 
