среда, 18 октября 2017 г.

Вопрос

[ [ 1 2 ] [ 3 4 ] ] как на Haskell преобразовать к [ 1 2 3 4 ] ?

Ну или на каком-нибудь другом функциональном языке?

У меня так:

[ [ 1 2 ] [ 3 4 ] ] .Fold

Но у меня же - "на коленке". Хочется понимать как "у людей" устроено.

А [ 1 2 ] .Join [ 3 4 ] как?

А [ 1 2 ] .Map .ToString как?

А [ 1 2 ] .Filter .IsOdd как?

А 0 [ 1 2 ] .For + /*сумма элементов*/ как?

Надеюсь, что смысл примеров понятен. Хотя они конечно "на коленке".

Если они всё же понятны, то может быть кто-то откликнется и расскажет как подобное на настоящих языках можно сделать?

21 комментарий:

  1. О да! Тут вообще всё понятно. Мне нравится.

    ОтветитьУдалить
  2. А concat [ [ 1 2 [ 3 4 ] ] [ 5 6 ] ]

    что сделает?

    А как удалить дубликаты из [ 1 2 3 1 3 4] ?

    ОтветитьУдалить
    Ответы
    1. А как посчитать количество элементов в [ 1 2 3 ] ?

      Count [ 1 2 3 ] ?

      Удалить
  3. Show - это функция преобразования?

    ОтветитьУдалить
  4. Filter - понял, но что там за кавычки?

    ОтветитьУдалить
  5. Последний пример - сумма элементов массива. "Свёртка" если не ошибаюсь.

    ОтветитьУдалить
  6. -> понятно. Отображение a в b.

    a -> b

    ОтветитьУдалить
  7. А к каждому элементу 1 прибавить?

    [ 1 2 3 ] .Map ( + 1 ) ?

    ОтветитьУдалить
  8. "Обратные тики-кавычки нужны для инфиксной записи бинарной функции. То есть мы располагаем mod между аргументами."

    А иначе польская запись?

    ОтветитьУдалить
  9. "\x - это начало лямбда-функции"

    Понял.

    \ - это "ключевое слово" лямбда?

    ОтветитьУдалить
  10. Фактически \x определяет аргумент и тот факт, что это лямбда?

    ОтветитьУдалить
  11. Sum
    А как произвольную лямбду для пары элементов подать?

    Ну например квадрат?

    ОтветитьУдалить
  12. intercalate [10] [[1, 2], [3, 4], [5, 6]]

    О! У меня такое есть:

    [ [1 2] [ 3 4 ] [ 5 6] ] [ 10 ] .CatWithSeparator

    ОтветитьУдалить
  13. filter odd [1,2,3,4] же, ну..

    ОтветитьУдалить