JS и его "недостатки"
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.123] |
|
|
Правила раздела:
| Страницы: (66) « Первая ... 44 45 [46] 47 48 ... 65 66 ( Перейти к последнему сообщению ) |
JS и его "недостатки"
|
Сообщ.
#676
,
|
|
|
|
Цитата fatalist @ Почему? Я же этот метод непосредственно из onclick ячейки вызываю, там же дефолтные действия при клике на ячейке... Тогда я не совсем понял чем твой вариант отличается от того, который я нарисовал. |
|
Сообщ.
#677
,
|
|
|
|
Теперь допустим у нас есть еще такая функция:
![]() ![]() makeList = case (random 2) of 0 → Cons 0 list 1 → Cons "zero" list тут компилятор может либо догадаться сам, либо мы ему подсказать, явно приписав тип makeList: ![]() ![]() makeList : () → List (Nat | String, Nat, String, Bool) в итоге из show (makeList) получим последовательность ![]() ![]() show{Nat|String} x -- где (Cons x list) <= makeList show{Nat} 1 -- забыл в первый раз типы приписать show{String} "two" show{Bool} False и далее ![]() ![]() typecase x of Nat → show{Nat} x String → show{String} x show{Nat} 1 show{String} "two" show{Bool} False Это для случая, когда тип определяется в динамике. |
|
Сообщ.
#678
,
|
|
|
|
Цитата Астарот @ Да в общем-то ничем, кроме того, что он явно определен и нет проверки на его существование Тогда я не совсем понял чем твой вариант отличается от того, который я нарисовал. |
|
Сообщ.
#679
,
|
|
|
|
Цитата fatalist @ Да в общем-то ничем, кроме того, что он явно определен и нет проверки на его существование ![]() А! Ты имеешь ввиду, что я написал onclick = function(){...}, а не onclick = method(); ? То есть намертво прибил какой-то обработчик без возможности замены? |
|
Сообщ.
#680
,
|
|
|
|
Что именно? ![]() ![]() template<typename T, typename... Args> void format_print(const char* s, T value, Args... args) это ![]() ![]() instance List {∀α <: Show} <: Show show : List α → () , ![]() ![]() std::cout << value; это ![]() ![]() show x , ![]() ![]() format_print("a = %, b = %, c = %", 10, 2.1, "aaa"); это ![]() ![]() show list Ну или если явно, то ![]() ![]() show $ Cons 10 $ Cons 2.1 $ Cons "aaa" Nil или с сахаром: ![]() ![]() show [10, 2.1, "aaa"] Если тебе необходима форматная строка, сейчас допишу. |
|
Сообщ.
#681
,
|
|
|
|
Цитата Астарот @ Ну я имел в виду, что у меня во первых сделано по принципу того-же onclick - ИМХО когда работаешь с объектом извне удобно с ним работать по той же схеме, что и с элементами...А! Ты имеешь ввиду, что я написал onclick = function(){...}, а не onclick = method(); ? То есть намертво прибил какой-то обработчик без возможности замены? А во вторых у меня сразу прописано что туда передается и она по любому вызывается... то есть в прототипе она уже будет, а как ее будет использовать сторонний программист - это его проблемы... |
|
Сообщ.
#682
,
|
|
|
|
Еще не надоело копья ломать?
|
|
Сообщ.
#683
,
|
|
|
|
С форматной строкой ![]() ![]() type List {α : Type, β : Type} = Cons α (List β) | (Nil : ()) instance List {∀α <: Show} <: Show formatShow : String → List α → () formatShow fmt xs = rec fmt xs where rec fmt Nil = show fmt rec fmt (Cons x xs) = do let fmt = until '%' print fmt show x rec (tail fmt) xs end end соответственно ![]() ![]() formatShow "a = %, b = %, c = %" [10, 2.1, "aaa"] |
|
Сообщ.
#684
,
|
|
|
|
Цитата SPM @ Кому? Какие копья? Я еще ничего не сломал Еще не надоело копья ломать? |
|
Сообщ.
#685
,
|
|
|
|
Цитата korvin @ instance List {∀α <: Show} <: Show Эт чо за юникодные символы такие, которых на клаве даж нема? Или это просто псевдокод-формула? |
|
Сообщ.
#686
,
|
|
|
|
Цитата SPM @ Еще не надоело копья ломать? Мы взрослые люди - ничего не ломаем. Спокойно пользуемся линейкой... |
|
Сообщ.
#687
,
|
|
|
|
Цитата KILLER @ Эт чо за юникодные символы такие, которых на клаве даж нема? Или это просто псевдокод-формула? ![]() ∀ - квантор всеобщности α - буква греческого алфавита. |
|
Сообщ.
#688
,
|
|
|
|
Цитата korvin @ ∀ - квантор всеобщности α - буква греческого алфавита. Я думал что эти символы являются частью синтаксиса языка, на котором ты все это привел... |
|
Сообщ.
#689
,
|
|
|
|
Но они есть... И есть именно по вышеозвученной причине - невозможности расширить список аргументов в будущем при необходимости. ![]() ![]() BOOL WINAPI DllMain( __in HINSTANCE hinstDLL, __in DWORD fdwReason, __in LPVOID lpvReserved ); ![]() ![]() BOOL InternetCheckConnection( __in LPCTSTR lpszUrl, __in DWORD dwFlags, __in DWORD dwReserved ); Это не то... При va_list у тебя прототип должен содержать описание переменного числа аргументов. А я говорю про возможность вызова функции с числом аргументов, отличным от прототипа. Нет ли здесь противоречий? |
|
Сообщ.
#690
,
|
|
|
|
Цитата KILLER @ Я думал что эти символы являются частью синтаксиса языка, на котором ты все это привел... А, нет, то псевдоязык. Однако, например, для хаскелла есть "pretty-print-редакторы", которые при отображении кода подменяют стрелки -> и => и др. на соответствующие юникодные символы. Типовые переменные часто пишут греческими буквами (не в рабочем коде, а в "публицируемом", конечно), чтоб лучше отличались от других термов. Квантор всеобщности в (template-?) хаскелле записывается как "forall.", не знаю, подменяют ли его редакторы на соответствующий символ. |