Функциональные языки (Страница 2) / Программирование / Форум StopLinux

Объявление

Kwork.ru - услуги фрилансеров от 500 руб.

#26 10-10-11 01:05:57

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

Re: Функциональные языки

https://ideone.com/4ubEF
довольно симпатичный код.

Неактивен

#27 16-01-12 16:06:20

DonDublon3
Участник
Из Уфа
Зарегистрирован: 06-05-10
Сообщений: 641
Windows XPOpera 11.60

Re: Функциональные языки

Пример из реальной жизни, программку написал "для себя". (на F#)
Написал давно, но иногда запускаю до сих пор, как скрипт.

#light
// 1-й параметр
// 2-й - каталог

open System.IO
open System
open System.Collections.Generic

let cmd_args = Environment.GetCommandLineArgs()

let main (args: string[]) =
    if cmd_args.Length < 2 then 
        "no parameter"
    else
        let rec dumpdir dirname =
            if Directory.Exists(dirname) then
                let files = Directory.GetFiles(dirname, "*.pas") |> Array.map (fun(f)-> (Path.GetFileName(f), f)) |> Array.toList
                let subdirs = Directory.GetDirectories dirname |> Array.map (fun(d) -> dumpdir(d)) |> List.concat
                List.append files subdirs
            else
                raise (new IOException("No directory " + dirname))

        let dir_name = cmd_args.[2]
        try
            let lines = dumpdir dir_name |> List.map(fun(k,v) -> k + "\t" + v) |> List.sort
            File.WriteAllLines("index.txt", lines)
            "OK"
        with
        | :? IOException as ioex -> ioex.Message


main cmd_args |> Console.WriteLine

Программка собдает "оглавление" файлов в каталоге, включая подкаталоги, и выводит в отсортированом виде по имени файла, табличку (чтобы по имени файла увидеть его полный путь).

Минусы:
- Кода действительно много. На императивном можно написать короче.
- много работы по преобразованию данных. Обратите внимание на Array.toList - преобразования массива в список.

Плюсы:
- Сложнее сделать ошибку. Если IDE не подчеркнул красным - весьма вероятно, что код не только будет работать, но и будет работать правильно. Другой вопрос, что если у вас подчёркнуто красным, ошибка может быть совсем не там smile

- Код более читаемый. Обратите внимание на знак |> - запись программы получается более близкая к реальному языку, когда сначала пишем что обычно внутри блока кода, а потом, что вовне.


"Фу бля, крохобор вонючий" (с) Svart Testare

Неактивен

#28 16-01-12 17:30:52

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
MacintoshSafari 5.0

Re: Функциональные языки

По фичам похож на руби, один в один.

Добавлено спустя 03 мин 51 с:
Вообще, прям как руби выглядит, только синтаксис другой.

Неактивен

#29 17-01-12 10:30:13

DonDublon3
Участник
Из Уфа
Зарегистрирован: 06-05-10
Сообщений: 641
Windows XPOpera 11.60

Re: Функциональные языки

Babusha пишет:

По фичам похож на руби, один в один.

Добавлено спустя 03 мин 51 с:
Вообще, прям как руби выглядит, только синтаксис другой.

Руби не знаю, в курсе только, что он похож на Питон.
Внешне может, и похоже, но язык совсем другой. Прежде всего, язык статически типизирован. Поэтому автоматический вывод типов имеет смысл и присутствует.
В руби тоже можно возвращать значение без слова return и аналогов?
А передавать объекты по пайпам (то, что делается с помощью |> )?


"Фу бля, крохобор вонючий" (с) Svart Testare

Неактивен

#30 17-01-12 23:37:05

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 16.0.912.75

Re: Функциональные языки

DonDublon3 пишет:

Руби не знаю, в курсе только, что он похож на Питон.

Нифига, питон корявая и унылая поделка.

DonDublon3 пишет:

В руби тоже можно возвращать значение без слова return и аналогов?

В руби действует функциональная концепция "все есть выражение" и return очень редко используется.

DonDublon3 пишет:

А передавать объекты по пайпам (то, что делается с помощью |> )?

В руби можно даже реализовать такую конструкцию средствами языка.

Неактивен

#31 18-01-12 08:24:22

DonDublon3
Участник
Из Уфа
Зарегистрирован: 06-05-10
Сообщений: 641
Windows XPOpera 11.60

Re: Функциональные языки

надо будет глянуть


"Фу бля, крохобор вонючий" (с) Svart Testare

Неактивен

Kwork.ru - услуги фрилансеров от 500 руб.
Мой VPS с 2016 года !
✅ Виртуальные от 300 ₽/месяц, RAM 1-10GB, DISK 20-360 GB;
✅ Выделенные от 3000 ₽/месяц. RAM 4-64GB, DISK до 4TB;
✅ Intel Xeon, SSD, XEN, iLO/KVM, Windows/Linux, Администрирование;
✅ Бесплатно Full Backup и Anti-DDoS.





Подвал форума

Под управлением FluxBB
Модифицировал Visman

Яндекс.Метрика