Автор Тема: Lua  (Прочитано 115152 раз)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #150 : Ноябрь 13, 2012, 09:59:38 am »
Ну типа так:

MODULE SmartTest;
IMPORT
    Log := StdLog;
TYPE
    P = PROCEDURE(a, b: INTEGER): BOOLEAN;

PROCEDURE Comp(a, b: INTEGER): BOOLEAN;
BEGIN
    RETURN a < b;
END Comp;

PROCEDURE Sort(func: P);
VAR
    a, b: INTEGER;
    res: BOOLEAN;
BEGIN
    a := 1;
    b := 2;
    res := func(a, b);
    Log.Bool(res);
END Sort;
   
PROCEDURE Do*();   
BEGIN
    Sort(Comp)
END Do;
   
BEGIN
END SmartTest.Do

То же самое что и в луашной сортировке... не?  ???

Не. Луашная функция Table.sort сортирует не только целые числа. Попробуй ка этой же функцией SmartTest.Sort, не изменяя её исходник, отсортировать массив строк.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #151 : Ноябрь 13, 2012, 10:01:12 am »

Мне на изучение Lua хватило 3 дней. А сколько ты изучал cpp?  ;)
КРАЙНЕ не корректное сравнение..

Почему это? В контексте моего кода на Lua и кода valexey на cpp ИМХО вполне корректное...  :P

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #152 : Ноябрь 13, 2012, 10:04:40 am »
Ну типа так:

MODULE SmartTest;
IMPORT
    Log := StdLog;
TYPE
    P = PROCEDURE(a, b: INTEGER): BOOLEAN;

PROCEDURE Comp(a, b: INTEGER): BOOLEAN;
BEGIN
    RETURN a < b;
END Comp;

PROCEDURE Sort(func: P);
VAR
    a, b: INTEGER;
    res: BOOLEAN;
BEGIN
    a := 1;
    b := 2;
    res := func(a, b);
    Log.Bool(res);
END Sort;
   
PROCEDURE Do*();   
BEGIN
    Sort(Comp)
END Do;
   
BEGIN
END SmartTest.Do

То же самое что и в луашной сортировке... не?  ???

Не. Луашная функция Table.sort сортирует не только целые числа. Попробуй ка этой же функцией SmartTest.Sort, не изменяя её исходник, отсортировать массив строк.

Ну так мы все таки про обобщенку или фвп?

ps Я вот если чесна вообще не очень понимаю чем отличается фвп от процедурного типа в паскале...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #153 : Ноябрь 13, 2012, 10:05:14 am »
Почему это? В контексте моего кода на Lua и кода valexey на cpp ИМХО вполне корректное...  :P
Потому, что если бы ты пользовался Lua со, скажем, 2004 года, то ты бы его к текущему моменту изучал не 3 дня, а 8-9 лет (lua, как и с++, развивается, и тот что был в 2004 году не является тем что сейчас). И исходник ты написал бы для этой задачи в точности такой же.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Lua
« Ответ #154 : Ноябрь 13, 2012, 10:06:46 am »
Почему это? В контексте моего кода на Lua и кода valexey на cpp ИМХО вполне корректное...  :P
Потому, что если бы ты пользовался Lua со, скажем, 2004 года, то ты бы его к текущему моменту изучал не 3 дня, а 8-9 лет (lua, как и с++, развивается, и тот что был в 2004 году не является тем что сейчас). И исходник ты написал бы для этой задачи в точности такой же.
  :D  ;)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #155 : Ноябрь 13, 2012, 10:07:40 am »
Ну так мы все таки про обобщенку или фвп?

ps Я вот если чесна вообще не очень понимаю чем отличается фвп от процедурного типа в паскале...
А ты видел хоть один язык где декларировались HOF но при этом не было бы обобщенки? ;-) Одно с другим тесно связано.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #156 : Ноябрь 13, 2012, 10:12:00 am »
Почему это? В контексте моего кода на Lua и кода valexey на cpp ИМХО вполне корректное...  :P
Потому, что если бы ты пользовался Lua со, скажем, 2004 года, то ты бы его к текущему моменту изучал не 3 дня, а 8-9 лет (lua, как и с++, развивается, и тот что был в 2004 году не является тем что сейчас). И исходник ты написал бы для этой задачи в точности такой же.

Не пойму к чему ты клонишь... Неужели CPP вместе с STL можно вкурить за 3 дня и свободно кодить как на Lua?  ;)

Пакажи мне чувака за 3 дня курения cpp могущего соорудить код подобный твоему.
« Последнее редактирование: Ноябрь 13, 2012, 10:14:04 am от ilovb »

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #157 : Ноябрь 13, 2012, 10:15:03 am »
ps Я вот если чесна вообще не очень понимаю чем отличается фвп от процедурного типа в паскале...
А отличие очень простое - функция высшего порядка это функция которая принимает на вход одну или несколько функций и на выход гонит тоже функцию. Так вот, чтобы это имело смысл, очень желательно иметь для функций не только одну лишь операцию присваивания. Должна быть возможность вернуть новую функцию, которой еще не было в программе. Для этого можно использовать каррирование, замыкания, комбинаторы и так далее.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #158 : Ноябрь 13, 2012, 10:18:14 am »
Почему это? В контексте моего кода на Lua и кода valexey на cpp ИМХО вполне корректное...  :P
Потому, что если бы ты пользовался Lua со, скажем, 2004 года, то ты бы его к текущему моменту изучал не 3 дня, а 8-9 лет (lua, как и с++, развивается, и тот что был в 2004 году не является тем что сейчас). И исходник ты написал бы для этой задачи в точности такой же.

Не пойму к чему ты клонишь... Неужели CPP вместе с STL можно вкурить за 3 дня и свободно кодить как на Lua?  ;)

Пакажи мне чувака за 3 дня курения cpp могущего соорудить код подобный твоему.
На уровне сортировок - можно. Особенно современный C++ (с++11).
У меня же там даже своих шаблонов нет :-) Там вообще ничего сложного не используется. Обычная функция sort (которая мгновенно нагугливается) и обычные лямбды, которые ровно те же (для этой задачи) что и в js например.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #159 : Ноябрь 13, 2012, 10:20:00 am »
ps Я вот если чесна вообще не очень понимаю чем отличается фвп от процедурного типа в паскале...
А отличие очень простое - функция высшего порядка это функция которая принимает на вход одну или несколько функций и на выход гонит тоже функцию. Так вот, чтобы это имело смысл, очень желательно иметь для функций не только одну лишь операцию присваивания. Должна быть возможность вернуть новую функцию, которой еще не было в программе. Для этого можно использовать каррирование, замыкания, комбинаторы и так далее.

А я думал что этого достаточно:
Фу́нкция вы́сшего поря́дка — функция, принимающая в качестве аргументов другие функции или возвращающая другую функцию в качестве результата. Основная идея состоит в том, что функции имеют тот же статус, что и другие объекты данных

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #160 : Ноябрь 13, 2012, 10:20:17 am »
Пакажи мне чувака за 3 дня курения cpp могущего соорудить код подобный твоему.
Вообще, я слабо представляю как можно подтвердить или опровергнуть твое или мое суждение. Оба утверждения, в наших реалиях, не фальсифицируемы. Поэтому не вижу смысла дальше спорить.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #161 : Ноябрь 13, 2012, 10:23:18 am »
ps Я вот если чесна вообще не очень понимаю чем отличается фвп от процедурного типа в паскале...
А отличие очень простое - функция высшего порядка это функция которая принимает на вход одну или несколько функций и на выход гонит тоже функцию. Так вот, чтобы это имело смысл, очень желательно иметь для функций не только одну лишь операцию присваивания. Должна быть возможность вернуть новую функцию, которой еще не было в программе. Для этого можно использовать каррирование, замыкания, комбинаторы и так далее.

А я думал что этого достаточно:
Фу́нкция вы́сшего поря́дка — функция, принимающая в качестве аргументов другие функции или возвращающая другую функцию в качестве результата. Основная идея состоит в том, что функции имеют тот же статус, что и другие объекты данных

ok, давай на примерах. Представим себе, что в неком языке "Оo" есть целые числа. Есть как целочисленные литералы, так и целочисленные переменные. Целочисленной переменной можно присваивать целочисленные литералы, также можно присваивать значение одной переменной другой переменной. Все, больше ни одной операции для целых чисел в языке Oo нет (операций сложения, вычитания, умножения и так далее).

Внимание вопрос - можно ли считать, что данный язык полноценно поддерживает концепцию целых чисел?
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #162 : Ноябрь 13, 2012, 10:27:07 am »
На уровне сортировок - можно. Особенно современный C++ (с++11).
У меня же там даже своих шаблонов нет :-) Там вообще ничего сложного не используется. Обычная функция sort (которая мгновенно нагугливается) и обычные лямбды, которые ровно те же (для этой задачи) что и в js например.

Сдаюсь. Лямбды, шаблоны, JS - куда уж проще....  :)

ps У меня вот JS курить терпения не хватило. Lua на порядок проще.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #163 : Ноябрь 13, 2012, 10:32:10 am »
ok, давай на примерах. Представим себе, что в неком языке "Оo" есть целые числа. Есть как целочисленные литералы, так и целочисленные переменные. Целочисленной переменной можно присваивать целочисленные литералы, также можно присваивать значение одной переменной другой переменной. Все, больше ни одной операции для целых чисел в языке Oo нет (операций сложения, вычитания, умножения и так далее).

Внимание вопрос - можно ли считать, что данный язык полноценно поддерживает концепцию целых чисел?
Нет конечно.

Но есть определение фвп которое я привел.
И есть процедурный тип который соответствует этому определению. Вот и все.

Набор операций над функциями вроде приведен в определении ("передавать" и "принимать")...

DIzer

  • Гость
Re: Lua
« Ответ #164 : Ноябрь 13, 2012, 10:32:24 am »
Внимание вопрос - можно ли считать, что данный язык полноценно поддерживает концепцию целых чисел?
  ;D Огласите свою "концепцию целых чисел" - и мы дадим вам ответ!  ;D