То, что вы описываете, это List.take
функция в базовой библиотеке SML:
List.take ([1,2,3,4],2 )
[1,2]
Если вы хотите сделать функцию самостоятельно:
fun take ([], _) = []
| take (_, 0) = []
| take (x::xs, n) = x::take(xs, n-1)
Или для демонстрации использования -> nil, ::, @
(использование @
не рекомендуется, только для иллюстрации):
fun take (nil, _) = nil
| take (_, 0) = nil
| take (x::xs, n) = [x] @ take(xs, n-1)