Это более общая функция. Это займет любое действительное число из любой функции.
Это, конечно, только две части.
Я уверен, что вы можете сделать лучше. Это просто стартер. Я использую show для обработки числа как строки, потому что Haskell очень требователен к смешиванию плавающих / не плавающих типов.
c2l d = splitAt 1 [read [u] :: Int| u<-(tail.tail.show $ d/10)]
Выполнить как
c2l (22/7)
([3], [1,4,2,8,5,7,1,4,2,8,5,7,1,4,3])
Или
c2l (sqrt 13)
([3], [6,0,5,5,5,1,2,7,5,4,6,3,9,8,9])
Кроме того, библиотека Haskell Math является самой замечательной. Существует компьютерная алгебра, точки фиксации, теория множеств, анализ, линейная алгебра (!) И абстрактная алгебра.
Возьмите splitAt 1
, чтобы получить только линейный список.