A Kotlin program should be written to check if a list is sorted or not using a generic checkSorting() function that accepts the list and a comparison function. The function should work for any Number subtype lists. It should return True if sorted based on the comparison condition, else False. checkSorting() needs to be pure, recursive and use an internal helper. The program should be tested on two Number subtype lists. Extension functions are required for tail() and head() operations on the list.