Haskell — Как разделить число на список для последующей обработки?

У меня есть Интервал, на который я хочу разделить, он - отдельные числа, которые идеально содержались бы в списке, который я могу затем обработать далее. Таким образом, я хотел бы что-то вроде этого:

split 245
--will then get an list containing [2,4,5]

Действительно ли кто-либо знаком с такой функцией?

7
задан RCIX 14 January 2010 в 04:23
поделиться

3 ответа

import Data.Char

map digitToInt $ show 245
22
ответ дан 6 December 2019 в 06:03
поделиться

Вы можете получить все подметки человека на одном шаге (XML-> XMLZIP: публикация: вкладчик: Person_Name) Тогда получите имени деталей, если они существуют (XML1-> Personzip: фамилия текста) и комбинируйте их в результате, который вы хотите Вроде так:

(use 'clojure.contrib.zip-filter.xml)
(defn format-name
  [surname given suffix]
  (str surname (if given (str ", " given)) (if suffix (str ", " suffix))))
(defn get-names
  [xz] 
  (map (juxt 
         #(xml1-> % :surname text) 
         #(xml1-> % :given_name text) 
         #(xml1-> % :suffix text))
     (xml-> xz :publication :contributors :person_name)))
(let [x (clojure.zip/xml-zip (clojure.xml/parse "foo.xml"))] 
  (map (partial apply format-name) (get-names x)))

приводит к («Фамилия« Фамилия B, данная B, суффикс B »)

-121--3690603-
digits :: (Integral a) => a -> [a]
digits = flip digits' [] . abs

digits' :: (Integral a) => a -> ([a] -> [a])
digits' n = if q == 0
  then (r :)
  else (digits q ++) . (r :)
  where
    (q, r) = n `divMod` 10

digits   1234  == [1, 2, 3, 4]
digits (-1234) == [1, 2, 3, 4]
1
ответ дан 6 December 2019 в 06:03
поделиться

Был бы пример здесь работать для вас? http://snippets.dzone.com/posts/show/5961

convRadix :: (Integral b) => b -> b -> [b]
convRadix n = unfoldr (\b -> if b == 0 then Nothing else Just (b `mod` n, b `div` n))

Пример:

> convRadix 10 1234
[4, 3, 2, 1]
> convRadix 10 0
[]
> convRadix 10 (-1)
[9,9,...] (infinite)

to convert haskell radix by mokehehe on Thu Aug 21 08:11:39 -0400 2008
4
ответ дан 6 December 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: