LINUX.ORG.RU
Ответ на: комментарий от anonymous

Ты так и продолжаешь блистать тупостью? Тебе показали, что фортран, как и любой другой вменяемый язык, может делать то же самое, что хашкел, только намного больше и лучше, без ограничений. Любой язык включая бейсик, включает в себя хаскель, в качестве примитивног подмножества.

Ну да, машинные коды включают в себя бейсик и фортран. Причем он может намного больше и лучше и без ограничений (:

Zodd ★★★★★
()
Ответ на: комментарий от qnikst

У хацкеля плюс, что в силу ленивости listcomp можно использовать активно там, где в других языках будут использоваться другие методы.

Например, всё в том же питоне можно в генераторах бахнуть и обмазываться ленивостью.

>>> pyth = ((a, b) for c in itertools.count(2, 1) for b in xrange(2, c) for a in xrange(2, b) if a**2 + b**2 == c**2)
>>> list(itertools.islice(pyth, 11))
[(3, 4), (6, 8), (5, 12), (9, 12), (8, 15), (12, 16), (15, 20), (7, 24), (10, 24), (20, 21), (18, 24)]
anonymous
()

Полностью с вами согласен, коллега

anonymous
()
Ответ на: комментарий от anonymous

Можно! Никто же не говорит что list comprehension это уникальная фича хацкеля :)

qnikst ★★★★★
()
Ответ на: комментарий от xaizek

Вообще-то они были еще во всяких Сетлах, но непосредственно до Хаскеля они были в Миранде, откуда их хаскелисты и взяли

buddhist ★★★★★
()
Ответ на: комментарий от anonymous

Саймона Пейтона Джонса в толксы??? Ты не слишком ли большого мнения о себе, а хомячок?

«Окончил Тринити-колледж в 1980 году, работал два года в промышленности, после чего стал преподавателем»

Лол, да... Нищий учитель, кумир школоты и борщехлебов.

anonymous
()
Ответ на: комментарий от buddhist

Только хаскелевая ленивость aka нормальный порядок. Сама по себе ленивость, такая как в тикле, баше, fexpr'ах — православна.

terminator-101
() автор топика
Ответ на: комментарий от qnikst

Ну как мог эксперт по проектированию ЯП пройти мимо слова «ленивость»?

anonymous
()
Ответ на: комментарий от xaizek

implied do loops к list comprehension отношение имеет весьма далёкое.

Хотя утверждение про первичность lc в Haskell тоже к реальному миру никакого отношения не имеет.

aedeph_ ★★
()

тоже вброшу

?- [A,B,C] ins 2..30, A #< B, A^2 + B^2 #= C^2, findall((A,B),label([A]),R).
R = [ (3, 4), (5, 12), (6, 8), (7, 24), (8, 15), (9, 12), (10, 24), (12, 16), (15, 20), (18, 24), (20, 21)]

anonymous
()
Ответ на: комментарий от anonymous

Вообще-то он на уровне начальника отдела в MSR работает. Инсайдеры говорят, что на таких должностях зарплаты от £90k в год.

anonymous
()
Ответ на: комментарий от anonymous

Вставайте в очередь, борщехлебы, лет через тридцать он помрет, и у вас появится шанс наконец-то съехать от мамки.

anonymous
()
Ответ на: комментарий от monk
program fltr
  implicit none
    integer :: i, j, n
    integer, allocatable :: r(:)

    r =  [( ifr(j>3.AND.mod(j,2)==0,[j],[(i,i=1,0)]),j=1,10 )]

    print*, size(r)
    print*, r

  contains
    function ifr(l, t, f) result( res)
       logical :: l
       integer :: t(:), f(:)
       integer,  allocatable :: res(:)
       if(l)then
          res = t
       else
          res = f
       endif
    end function
end program
anonymous
()
Ответ на: комментарий от anonymous

В свежем фортране память будет выделена перед присваиванием:

7.4.1.3 Interpretation of intrinsic assignments

... If variable is an allocated allocatable variable, it is deallocated if expr is an array of different shape or any of the corresponding length type parameter values of variable and expr differ. If variable is or becomes an unallocated allocatable variable, then it is allocated with each deferred type parameter equal to the corresponding type parameters of expr, with the shape of expr, and with each lower bound equal to the сorresponding element of LBOUND(expr ). ...

anonymous
()
Ответ на: комментарий от anonymous

Это всего лишь сахар над

#include <stdio.h>

int main()
{
	int a,  b,  c;
	for(c=2; c<=30; c++)
		for(b=2; b<=c; b++)
			for(a=2; a<=b; a++)
				if(a*a+b*b == c*c)
					printf("(%d,%d) ", a, b);
	printf("\n");
	return 0;
}
вы на это фапаете, да?

emulek
()
Ответ на: комментарий от emulek

Нет, ты неправильно сахар раскрыл. Надо так:

>>> print "[(3,4),(6,8),(5,12),(9,12),(8,15),(12,16),(15,20),(7,24),(10,24),(20,21),(18,24)]"
[(3,4),(6,8),(5,12),(9,12),(8,15),(12,16),(15,20),(7,24),(10,24),(20,21),(18,24)]
anonymous
()
Ответ на: комментарий от anonymous

Питон вообще как бы душит, а не кусает.
И я понимаю, когда надрачивают на какие-нибудь лиспы или хаскели, но питон не для фанбоев. В нем оригинальных идей нет, всё заимствованное, кроме мелочей вроде декораторов.

Virtuos86 ★★★★★
()

Да, тогда Саймон знатно протроллил! Я как раз тогда находился на пике разочарования в Хаскеле, и Саймон пришелся очень «кстати»... Не скажу что год изучения Скалы был потерян совсем уж зря, но всё-таки.

Хаскель очень быстро развивается... Вон в GHC 7.10 планируется новое расширения с перегруженными аксессорами для структур. Это должны оценить любители динамических языков: теперь и на хаскеле можно будет допускать феерические трудноуловимые рантайм-ошибки! И сейчас можно, для этого даже есть специальный пакет под названием lens, но, во-первых, для этого нужно широко использовать тайпклассы, во-вторых, всё-таки не совсем «официально».

Macil ★★★★★
()
Ответ на: комментарий от anonymous

Ты имеешь выражение, которое содержит оба подвыражения, таким образом, мы имеем новую программу.

Два раза «иметь». Нехорошо.

«У вас есть выражение, содержащее оба подвыражения, таким образом, получается новая программа.»

Deleted
()
Ответ на: комментарий от Macil

Это должны оценить любители динамических языков: теперь и на хаскеле можно будет допускать феерические трудноуловимые рантайм-ошибки!

а не расскажешь, как благодаря этому получать runtime ошибку?

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

а не расскажешь, как благодаря этому получать runtime ошибку?

Рантайм ошибку, не в смысле динамических языков, а в смысле когда одна небольшая ошибка типа вместо ^? написали ^., или линза определена в тайпклассе, или запутались с конвейером композиций «оптики», или допустили небольшую ошибку в определении линзы, приводит к возникновению трудноуловимых глюков.

Еще можно по запарке в одной «оптической» конструкции разместить две «противоположные» призмы (т.е. foo и re foo), что приведет к возникновению левых и никому не нужных вычислений.

А самая феерическая конструкция (из мелких) — Nothing ^. _Just :: String, возвратит mempty для String и тайпчекер даже не попробует ругнуться.

По просьбам юзеров! Всё как в динамических языках!!!

Macil ★★★★★
()
Ответ на: комментарий от Macil

По просьбам юзеров! Всё как в динамических языках!!!

Долборазрабы Haskell запилили фичу сомнительного свойства, а виноваты динамические языки. Что уж там, Россия во всем виновата (или США, в зависимости от)!

Virtuos86 ★★★★★
()
Ответ на: комментарий от Macil

Рантайм ошибку, не в смысле динамических языков, а в смысле когда одна небольшая ошибка типа вместо ^? написали ^., или линза определена в тайпклассе, или запутались с конвейером композиций «оптики», или допустили небольшую ошибку в определении линзы, приводит к возникновению трудноуловимых глюков.

кобминаторы везде перепутать можно, а вот то, что там ошибки адские выводятся - то это да, есть такое дело.

Еще можно по запарке в одной «оптической» конструкции разместить две «противоположные» призмы (т.е. foo и re foo), что приведет к возникновению левых и никому не нужных вычислений.

ну для этого линзы не нужны..

Nothing ^. _Just 

не понял, а что в этом такого? (^. _Just) :: Data.Monoid.Monoid b => Maybe b -> b с совершенно ожидаемым типов и поведением, что здесь тайпчеккеру ловить?

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

не понял, а что в этом такого?

Когда вместо ^? по запарке напишешь ^. — и словишь весьма всеобъемлющий wtf? в рантайме, сразу поймешь. Понятно дело, что *данная* конструкция понятна, просто потому что она минимальная, но очень просто словить аналог на каком-нибудь собственном Traversal' Foo Bar для какого-нибудь data ... = Foo (Maybe Bar) ...

Причем, если Bar не будет моноидом, то вывалится закономерная ошибка: мол не моноид.

С монадическими комбинаторами таких попадосов не бывает. Совершенно аццкие сообщения компилятора — иногда случаются. Компилятор не может вывести конкретный тип — бывает. Но в рантайм это, обычно, не проходит.

Macil ★★★★★
()
Ответ на: комментарий от Macil

ну у ^? и ^. немного разные типы, так что я слабо представляю себе код, которому подойдет и то и другое.. //да я линзами пользовался не много, потому могу не представлять.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

ну у ^? и ^. немного разные типы

Разные-то разные... Но можно немного «забыть» где у тебя линза, а где — траверсал/призма...

Короче, всё как в динамических языках: string и int — немного разные типы, но, сцуко, можно слегка «забыть».

Macil ★★★★★
()
Ответ на: комментарий от Macil

Два ответа от любителей хаскеля, и в каждом опечатки. Слава богу, хотя бы ваш программный код компилятор проверяет.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

Если тебе будет что сказать по делу, то можешь продолжать, а такие комментарии лучше при себе оставить.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

Если ты не заметил, я не тебе отвечал изначально. Таких людей я смело посылаю лесом.

Если тебе будет что сказать по делу, то можешь продолжать, а такие комментарии лучше при себе оставить.

Куда катится LOR.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

Если ты не заметил, я не тебе отвечал изначально

Если ты не заметил, то в комментарии на который ты отвечал никто не говорил, что динамические языки в чем-то виноваты. Т.е. твой ответ был совершенно не по делу, о чем я тебе написал. Но понять ни тот комментарий, ни мой ты не смог. Если бы ты ещё разбирался в вопросе, то можно было бы поговорить о том насколько фича спорная, насколько разрабы гхц долборазрабы, но тут уж не судьба.

Таких людей я смело посылаю лесом.

До тех пор пока ты не пишешь дельные вещи это не важно, в этой теме ты так не делаешь.

Куда катится LOR.

А куда ты его катишь? Судя по Simon Peyton Jones: Haskell — это бесполезный язык (комментарий) в обиталище троллей :(

qnikst ★★★★★
()
Ответ на: комментарий от Virtuos86

Два ответа от любителей хаскеля, и в каждом опечатки.

Хде?! Где ты в моём ответе опечатки увидел?

Macil ★★★★★
()
Ответ на: комментарий от anonymous

Ответ на: комментарий от Virtuos86 21.11.2014 21:45:11

а виноваты динамические языки

У вас проблемы? Вы хотите об этом поговорить?
Macil ★★★★★
(21.11.2014 22:17:00)
Последнее исправление:
Macil 21.11.2014 22:17:13
(всего исправлений: 1)
[Ответить][Ссылка]

Золотце, посмотри в первоначальную версию комментария этого господина, узри там опечатку (которую он исправил, что выгодно его отличает, но это не отменяет факт опечатки и того, что он был невнимателен) и принеси мне извинения как приличный человек, если считаешь себя вправе развешивать ярлыки. Заранее благодарен. Еще было бы неплохо предварительно изучать доступные факты, чтобы исключить скоропалительные выводы, но этот мир слишком суетен, слишком...

Virtuos86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.