func compareableSlice(slice reflect.Value) Fns {
	s, err := reflectutil.NewSlice(slice)
	if err != nil {
		panic(err)
	}
	return compareableFn(s.T())
}
Return a compare function for a given slice.
package order
import (
	"bytes"
	"fmt"
	"reflect"
	"strings"
	"time"
	"github.com/posener/order/internal/reflectutil"
)
func Is(value interface{}) Condition {
	return compareableFn(reflect.TypeOf(value)).Is(value)
}
func Sort(slice interface{}) {
	compareableSlice(reflect.ValueOf(slice)).Sort(slice)
}
func SortStable(slice interface{}) {
	compareableSlice(reflect.ValueOf(slice)).SortStable(slice)
}
func Search(slice, value interface{}) int {
	return compareableSlice(reflect.ValueOf(slice)).Search(slice, value)
}
func MinMax(slice interface{}) (min, max int) {
	return compareableSlice(reflect.ValueOf(slice)).MinMax(slice)
}
func IsSorted(slice interface{}) bool {
	return compareableSlice(reflect.ValueOf(slice)).IsSorted(slice)
}
func IsStrictSorted(slice interface{}) bool {
	return compareableSlice(reflect.ValueOf(slice)).IsStrictSorted(slice)
}
func Select(slice interface{}, k int) {
	compareableSlice(reflect.ValueOf(slice)).Select(slice, k)
}
func compareableFn(tp reflect.Type) Fns {
	f, err := fnOfComparableT(tp)
	if err != nil {
		panic(err)
	}
	return f
}