http://ideone.com/4ubEF
довольно симпатичный код.
Неактивен
Пример из реальной жизни, программку написал "для себя". (на 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 не подчеркнул красным - весьма вероятно, что код не только будет работать, но и будет работать правильно. Другой вопрос, что если у вас подчёркнуто красным, ошибка может быть совсем не там
- Код более читаемый. Обратите внимание на знак |> - запись программы получается более близкая к реальному языку, когда сначала пишем что обычно внутри блока кода, а потом, что вовне.
"Фу бля, крохобор вонючий" (с) Svart Testare
Неактивен
По фичам похож на руби, один в один.
Добавлено спустя 03 мин 51 с:
Вообще, прям как руби выглядит, только синтаксис другой.
Неактивен
По фичам похож на руби, один в один.
Добавлено спустя 03 мин 51 с:
Вообще, прям как руби выглядит, только синтаксис другой.
Руби не знаю, в курсе только, что он похож на Питон.
Внешне может, и похоже, но язык совсем другой. Прежде всего, язык статически типизирован. Поэтому автоматический вывод типов имеет смысл и присутствует.
В руби тоже можно возвращать значение без слова return и аналогов?
А передавать объекты по пайпам (то, что делается с помощью |> )?
"Фу бля, крохобор вонючий" (с) Svart Testare
Неактивен
Руби не знаю, в курсе только, что он похож на Питон.
Нифига, питон корявая и унылая поделка.
В руби тоже можно возвращать значение без слова return и аналогов?
В руби действует функциональная концепция "все есть выражение" и return очень редко используется.
А передавать объекты по пайпам (то, что делается с помощью |> )?
В руби можно даже реализовать такую конструкцию средствами языка.
Неактивен
надо будет глянуть
"Фу бля, крохобор вонючий" (с) Svart Testare
Неактивен