Объявление

Односложные и бессмысленные темы, не несущие полезную нагрузку или не содержащие в себе вопрос, будут удаляться!

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

Дестер
Капитан
Здесь с 09-11-10
Сообщений: 737
Сайт
Windows 7Chrome 14.0

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

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

Вне форума

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

DonDublon3
Участник
Откуда: Уфа
Здесь с 06-05-10
Сообщений: 676
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 16:30:52

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

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

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

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


Удовлетворен GNU/Linux (с) Linups_Troolvalds
13-значный пароль, состоящий из одних цифр, ломается за полчаса (с) Rector. Авторитетный Хакер у себя в классе
Я тебя просто отсюда выпилю.  (с) Рехтур. Взламывает анусы по ойпи.

Вне форума

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

DonDublon3
Участник
Откуда: Уфа
Здесь с 06-05-10
Сообщений: 676
Windows XPOpera 11.60

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

Babusha пишет:

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

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

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


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

Вне форума

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

Babusha
Нехристь
Здесь с 12-03-10
Сообщений: 2,221
Windows 7Chrome 16.0

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

DonDublon3 пишет:

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

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

DonDublon3 пишет:

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

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

DonDublon3 пишет:

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

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


Удовлетворен GNU/Linux (с) Linups_Troolvalds
13-значный пароль, состоящий из одних цифр, ломается за полчаса (с) Rector. Авторитетный Хакер у себя в классе
Я тебя просто отсюда выпилю.  (с) Рехтур. Взламывает анусы по ойпи.

Вне форума

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

DonDublon3
Участник
Откуда: Уфа
Здесь с 06-05-10
Сообщений: 676
Windows XPOpera 11.60

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

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


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

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

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

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

[ Сгенерировано за 0.012 сек, 7 запросов выполнено - Использовано памяти: 1.68 Мбайт (Пик: 1.78 Мбайт) ]