From 9bb66d9c1d8a7bf5bf02f5a7c400894e928d2a95 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Wed, 18 Feb 2015 22:37:39 +0100 Subject: Changed `ListIndex` to return false if no index is found * analogously to `list-index` and `find` in SRFI-1 --- src/list/operation/higher/drop_while.h | 2 +- src/list/operation/higher/list_index.h | 2 +- src/list/operation/higher/take_while.h | 2 +- src/type.h | 6 ++++++ 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::template function, + IsSize, Length >::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 { - typedef void type; + typedef Boolean 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::template function, + IsSize, Length >::template assure< ListIndex< diff --git a/src/type.h b/src/type.h index 508e22f..c2ad2d8 100644 --- a/src/type.h +++ b/src/type.h @@ -38,6 +38,12 @@ using IsEqualValue = Boolean; template using IsTrue = IsEqualValue>; +template +using IsBoolean = Eval>; + +template +using IsSize = Eval>; + } #endif // TYPEASVALUE_SRC_TYPE_H_ diff --git a/test.cc b/test.cc index 6a957b1..5742fb2 100644 --- a/test.cc +++ b/test.cc @@ -922,13 +922,13 @@ static_assert( static_assert( std::is_same< - void, + tav::Boolean, tav::ListIndex< tav::Even, tav::List, 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 -- cgit v1.2.3