Re[16]: Умирает ли Delphi?
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 09.11.09 13:40
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

DM>>И ни о каких преимуществах речи не идет (особенности реализации — не более).

MC>Инструментом, у которого нет преимуществ перед аналогом, никто пользоваться не будет.

Угу... Давайте это ребятам, которые микроконтроллеры программируют расскажем. Они поди и не в курсе, что НЕТ это круто, а Дельфи — отстой.
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re[15]: Умирает ли Delphi?
От: gecko  
Дата: 09.11.09 13:44
Оценка: -2
Здравствуйте, DarkMaster, Вы писали:

DM> это фактически очередной этап спирали


Да, .NET — это очередной этап спирали. А Delphi — давно пройденный этап.
Re[17]: Умирает ли Delphi?
От: Mr.Cat  
Дата: 09.11.09 13:46
Оценка:
Здравствуйте, DarkMaster, Вы писали:
DM>>>И ни о каких преимуществах речи не идет (особенности реализации — не более).
MC>>Инструментом, у которого нет преимуществ перед аналогом, никто пользоваться не будет.
DM>Угу... Давайте это ребятам, которые микроконтроллеры программируют расскажем. Они поди и не в курсе, что НЕТ это круто, а Дельфи — отстой.
В огороде бузина...
Re[12]: Умирает ли Delphi?
От: hattab  
Дата: 09.11.09 14:10
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>Что касается VCL, то она как была, так и остается GUI-ориентированной библиотекой для формоклепания.

BP>>Странное замечание. Вообще то для этого она и создавалась.
G>Проблема в том что у делфи ничего другого нет.

Давно на торри бывал?

BP>>И надо сказать что на сегодняшний день я более мощной и гибкой визуальной библиотеки не знаю.

G>Открой для себя WPF.

Что? Ты про этого тормоза с вырвиглазным рендерингом шрифтов (ах да, в 4ом фреймвоке вырвиглазность поправят )
(по поводу тормозов я уже как-то писал VladD2, он все сомневался, а теперь и сам огреб со своим wpf-хинтом)

G>>>Таких вещений как в WCF в .NET не было и не будет.

BP>>А когда это Делфи успела стать платформой?
G>Давно еще. В делфи версии с 5 активно развивались различные компоненты для работы с БД, с сетью, даже были возможности веб-разработки.
G>Но это все настолько убого и GUI-центрично что аж противно, особенно после того как писал для нормальной платформы.

Недавно на ембаркадере давали пример DataSnap ISAPI фильтра для IIS 7.0. Поищи там гуй-центричность
Re[14]: Умирает ли Delphi?
От: hattab  
Дата: 09.11.09 14:11
Оценка:
Здравствуйте, gecko, Вы писали:

G>На вопрос что лучше, Delphi или .NET, давно уже ответила сама Borland, когда легла под .NET


Delphi.NET уже давно закопали, ибо нах никому не нужен. Сейчас ориентир на гетерогенность: MacOS и Linux.
Re[15]: Умирает ли Delphi?
От: hattab  
Дата: 09.11.09 14:13
Оценка:
Здравствуйте, Dimonka, Вы писали:

G>>>>Открой для себя WPF.

BP>>>Открой для себя JCL, AlphaControls, DevExpress, Rize, Indi...
G>>
G>>Что из перечисленного похоже на WPF?

D>Вот что немного похоже:

D>http://www.ksdev.com/vgscene/index.html

Тормозное и неюзабельное УГ. GDI+ в полный рост... автор недокурил до GR32.
Re[16]: Умирает ли Delphi?
От: Dimonka Верблюд  
Дата: 09.11.09 14:29
Оценка:
Здравствуйте, hattab, Вы писали:

D>>Вот что немного похоже:

D>>http://www.ksdev.com/vgscene/index.html

H>Тормозное и неюзабельное УГ. GDI+ в полный рост... автор недокурил до GR32.


Тут я не согласен. В плане векторной графики GR32 полный тормоз. Во вторых, это не графическая библиеотека, а библиотека векторных контролов, чем в GR32 вообще не пахнет. Ну и если что-то советовать для ускорения именно векторной части, то надо сразу советовать тогда правильные вещи. Например Agg или Vpr. Вот они реально быстрее GDI+, GR32 и кайро.
Re[14]: Умирает ли Delphi?
От: BreakPoint  
Дата: 09.11.09 14:32
Оценка: 6 (1) -1
BP>>Не бывает плохих языков
MC>Это кому такое в голову пришло?

Тем у кого руки и голова из правильного места ростут.
Я работал со многими языками (ASM, Pas/ObjPas, C/C++, JS, PHP, Perl) и знаком еще с десятком языков. И ни про один из этих языков я не могу сказать, что он плохой. Язык и среда разработки это всего лишь инструмент. И ценность он приобретает только в руках того, кто умеет им пользоваться. Я работал с разными людьми, и никогда не слышал, что бы хороший программист (по моим критериям) позволял себе неуважительные высказывания в сторону средств разработки. И наоборот, самые ярые "критики" оказывались очень даже "средними" специалистами. Исключений из этого правила пока небыло.
Re[17]: Умирает ли Delphi?
От: hattab  
Дата: 09.11.09 14:44
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>>>Вот что немного похоже:

D>>>http://www.ksdev.com/vgscene/index.html

H>>Тормозное и неюзабельное УГ. GDI+ в полный рост... автор недокурил до GR32.


D>Тут я не согласен. В плане векторной графики GR32 полный тормоз.


По бенчам того же VPR, GR32 уделывает GDI+.

D>Во вторых, это не графическая библиеотека, а библиотека векторных контролов, чем в GR32 вообще не пахнет.


Во-первых я в курсе, что это (демку смотрел -- жуть). Во-вторых я не сказал, что GR32 является хоть сколь нибудь аналогом. Я лишь намекнул, что GR32 там (в VGScene) смотрелся бы уместнее GDI+.

D> Ну и если что-то советовать для ускорения именно векторной части, то надо сразу советовать тогда правильные вещи. Например Agg или Vpr. Вот они реально быстрее GDI+, GR32 и кайро.


Гхм... Ты сам-то бенчи из VPR смотрел? GR32 уделывает Agg. А VPR так и вообще надстройка над GR32.
Re[18]: Умирает ли Delphi?
От: Dimonka Верблюд  
Дата: 09.11.09 15:10
Оценка:
Здравствуйте, hattab, Вы писали:

D>>Во вторых, это не графическая библиеотека, а библиотека векторных контролов, чем в GR32 вообще не пахнет.


H>Во-первых я в курсе, что это (демку смотрел -- жуть). Во-вторых я не сказал, что GR32 является хоть сколь нибудь аналогом. Я лишь намекнул, что GR32 там (в VGScene) смотрелся бы уместнее GDI+.

В GDI+ есть всё же небольшие преимущества перед GR32. Она заточена под векторную графику, а GR32 под растровую. Чтобы реализовать все фичи (или хотя бы нужные фичи) GDI+ в GR32, надо реально попотеть.

D>> Ну и если что-то советовать для ускорения именно векторной части, то надо сразу советовать тогда правильные вещи. Например Agg или Vpr. Вот они реально быстрее GDI+, GR32 и кайро.


H>Гхм... Ты сам-то бенчи из VPR смотрел? GR32 уделывает Agg. А VPR так и вообще надстройка над GR32.


Да, я сам Маттиасу послал свой вариант AggLite, который по некоторым тестам был быстрее VPR. И он включён в последнюю версию бенчей.
Re[19]: Умирает ли Delphi?
От: hattab  
Дата: 09.11.09 15:25
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>>>Во вторых, это не графическая библиеотека, а библиотека векторных контролов, чем в GR32 вообще не пахнет.


H>>Во-первых я в курсе, что это (демку смотрел -- жуть). Во-вторых я не сказал, что GR32 является хоть сколь нибудь аналогом. Я лишь намекнул, что GR32 там (в VGScene) смотрелся бы уместнее GDI+.

D>В GDI+ есть всё же небольшие преимущества перед GR32. Она заточена под векторную графику, а GR32 под растровую. Чтобы реализовать все фичи (или хотя бы нужные фичи) GDI+ в GR32, надо реально попотеть.

Вообще, я сильно сомневаюсь в заточке GDI+ на вектор. Но еще больше я сомневаюсь в том, что VGScene требуются какие-то возможности GDI+, которые отсутствуют в GR32 (а вот более быстрый рендеринг ей бы совсем не помешал). GR32 Lines (Angus Johnson, надстроечка для GR32) видел? Меня впечатлило.

D>>> Ну и если что-то советовать для ускорения именно векторной части, то надо сразу советовать тогда правильные вещи. Например Agg или Vpr. Вот они реально быстрее GDI+, GR32 и кайро.


H>>Гхм... Ты сам-то бенчи из VPR смотрел? GR32 уделывает Agg. А VPR так и вообще надстройка над GR32.


D>Да, я сам Маттиасу послал свой вариант AggLite, который по некоторым тестам был быстрее VPR. И он включён в последнюю версию бенчей.


Я мартовские бенчи смотрел.
Re[15]: Умирает ли Delphi?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 09.11.09 15:32
Оценка: :)
Здравствуйте, Dimonka, Вы писали:

D>Здравствуйте, gandjustas, Вы писали:


G>>>>Открой для себя WPF.

BP>>>Открой для себя JCL, AlphaControls, DevExpress, Rize, Indi...
G>>
G>>Что из перечисленного похоже на WPF?

D>Вот что немного похоже:

D>http://www.ksdev.com/vgscene/index.html
Только платное оно.

D>А вообще, действительно с аргументацией неважно.

D>Лучше покажи, что ты сделал красивого на C#, чего нам, убогим, не осилить на дельфи.
State monad
Re[13]: Умирает ли Delphi?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 09.11.09 15:40
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, gandjustas, Вы писали:


G>>>>Что касается VCL, то она как была, так и остается GUI-ориентированной библиотекой для формоклепания.

BP>>>Странное замечание. Вообще то для этого она и создавалась.
G>>Проблема в том что у делфи ничего другого нет.
H>Давно на торри бывал?
Понятия не имею что это... и не хочу даже знать.

BP>>>И надо сказать что на сегодняшний день я более мощной и гибкой визуальной библиотеки не знаю.

G>>Открой для себя WPF.

H>Что? Ты про этого тормоза с вырвиглазным рендерингом шрифтов (ах да, в 4ом фреймвоке вырвиглазность поправят )

H>(по поводу тормозов я уже как-то писал VladD2, он все сомневался, а теперь и сам огреб со своим wpf-хинтом)

Да ты че? А почему VS2010 у меня работает быстрее 2008? А шрифты — дело вкуса, меня оно вообще не парит.

G>>>>Таких вещений как в WCF в .NET не было и не будет.

BP>>>А когда это Делфи успела стать платформой?
G>>Давно еще. В делфи версии с 5 активно развивались различные компоненты для работы с БД, с сетью, даже были возможности веб-разработки.
G>>Но это все настолько убого и GUI-центрично что аж противно, особенно после того как писал для нормальной платформы.
Re[20]: Умирает ли Delphi?
От: Dimonka Верблюд  
Дата: 09.11.09 15:43
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, Dimonka, Вы писали:


D>>>>Во вторых, это не графическая библиеотека, а библиотека векторных контролов, чем в GR32 вообще не пахнет.


H>>>Во-первых я в курсе, что это (демку смотрел -- жуть). Во-вторых я не сказал, что GR32 является хоть сколь нибудь аналогом. Я лишь намекнул, что GR32 там (в VGScene) смотрелся бы уместнее GDI+.

D>>В GDI+ есть всё же небольшие преимущества перед GR32. Она заточена под векторную графику, а GR32 под растровую. Чтобы реализовать все фичи (или хотя бы нужные фичи) GDI+ в GR32, надо реально попотеть.

H>Вообще, я сильно сомневаюсь в заточке GDI+ на вектор. Но еще больше я сомневаюсь в том, что VGScene требуются какие-то возможности GDI+, которые отсутствуют в GR32 (а вот более быстрый рендеринг ей бы совсем не помешал).


В gr32 придётся делать отрисовку градиентов и улучшать контуры полигонов (stroke). Что в GR32 хорошо — это оптимизированный блендинг пикселей, ну и конечно сам TBitmap32, всё остальное приходится либо делать вручную, либо использовать другие библиотеки в довесок.

H>GR32 Lines (Angus Johnson, надстроечка для GR32) видел? Меня впечатлило.


Да, видел. Неплохо. Что-то мне там не понравилось, не помню что Даже ещё раз скачаю, посмотрю.
Сейчас скачал — тормозит жесточайше. Любой пшик делается с большим трудом.. Короче говоря, идеал пока не достигнут, но функционал становится интересным.
Re[16]: Умирает ли Delphi?
От: Dimonka Верблюд  
Дата: 09.11.09 15:56
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>>Открой для себя WPF.

BP>>>Открой для себя JCL, AlphaControls, DevExpress, Rize, Indi...
G>>
G>>Что из перечисленного похоже на WPF?
D>>Вот что немного похоже:
D>>http://www.ksdev.com/vgscene/index.html
G>Только платное оно.

Да и дельфи, в общем-то, бесплатно не раздают.

D>>А вообще, действительно с аргументацией неважно.

D>>Лучше покажи, что ты сделал красивого на C#, чего нам, убогим, не осилить на дельфи.
G>State monad

Ну так покажи
Re[14]: Умирает ли Delphi?
От: hattab  
Дата: 09.11.09 16:03
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>>>Что касается VCL, то она как была, так и остается GUI-ориентированной библиотекой для формоклепания.

BP>>>>Странное замечание. Вообще то для этого она и создавалась.
G>>>Проблема в том что у делфи ничего другого нет.
H>>Давно на торри бывал?
G>Понятия не имею что это... и не хочу даже знать.

А еще "...ничего другого нет", и почему я не удивлен

BP>>>>И надо сказать что на сегодняшний день я более мощной и гибкой визуальной библиотеки не знаю.

G>>>Открой для себя WPF.

H>>Что? Ты про этого тормоза с вырвиглазным рендерингом шрифтов (ах да, в 4ом фреймвоке вырвиглазность поправят )

H>>(по поводу тормозов я уже как-то писал VladD2, он все сомневался, а теперь и сам огреб со своим wpf-хинтом)

G>Да ты че? А почему VS2010 у меня работает быстрее 2008?


Про 2010 тут рядышком говорили, что она побыстрее только на некоторых сценариях. Без уточнения. Да и не релизнулась еще.

G>А шрифты — дело вкуса, меня оно вообще не парит.


Разумеется, как косяк так сразу не парит. А юзеров твоих? Или их вообще никто не спрашивал, скормили энтерпрайзное овно они и давятся молча?
Re[21]: Умирает ли Delphi?
От: hattab  
Дата: 09.11.09 16:05
Оценка:
Здравствуйте, Dimonka, Вы писали:

H>>Вообще, я сильно сомневаюсь в заточке GDI+ на вектор. Но еще больше я сомневаюсь в том, что VGScene требуются какие-то возможности GDI+, которые отсутствуют в GR32 (а вот более быстрый рендеринг ей бы совсем не помешал).


D>В gr32 придётся делать отрисовку градиентов и улучшать контуры полигонов (stroke). Что в GR32 хорошо — это оптимизированный блендинг пикселей, ну и конечно сам TBitmap32, всё остальное приходится либо делать вручную, либо использовать другие библиотеки в довесок.


Насколько я помню, у GR32 есть демка с градиентами. Да и качество отрисовки регулировать можно, разве нет? Да и вообще, использования нативной библиотеки (пусть даже с довесками) мне представляется лучшим решением нежели таскание gdiplus.dll в ресурсах.

H>>GR32 Lines (Angus Johnson, надстроечка для GR32) видел? Меня впечатлило.


D>Да, видел. Неплохо. Что-то мне там не понравилось, не помню что Даже ещё раз скачаю, посмотрю.

D>Сейчас скачал — тормозит жесточайше. Любой пшик делается с большим трудом.. Короче говоря, идеал пока не достигнут, но функционал становится интересным.

Да, тормозит, но ведь и изыски подобные нужны далеко не всегда.
Re[17]: Умирает ли Delphi?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 09.11.09 17:09
Оценка: 5 (1)
Здравствуйте, Dimonka, Вы писали:

D>>>А вообще, действительно с аргументацией неважно.

D>>>Лучше покажи, что ты сделал красивого на C#, чего нам, убогим, не осилить на дельфи.
G>>State monad

D>Ну так покажи


Ну держи.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace StateMonad
{
    public class Unit
    {
        public static readonly Unit Value = new Unit();

        private Unit () { }
    }

    /// <summary>
    /// State-content pair
    /// </summary>
    /// <typeparam name="S">Type of State</typeparam>
    /// <typeparam name="C">Type of Content</typeparam>
    public class Scp<S,C>
    {
        public Scp(S state, C content)
        {
            State = state;
            Content = content;
        }

        public S State { get; private set; }
        public C Content { get; private set; }

        public override string ToString()
        {
            return "{" + State + ", " + Content + "}";
        }
    }

    /// <summary>
    /// State monad
    /// </summary>
    /// <typeparam name="S">Type of State</typeparam>
    /// <typeparam name="C">Type of Content</typeparam>
    public class StateMonad<S, C>
    {
        public StateMonad(Func<S, Scp<S, C>> s2Scp)
        {
            S2Scp = s2Scp;
        }

        /// <summary>
        /// State to state-content pair
        /// </summary>
        public Func<S,Scp<S,C>> S2Scp { get; private set; }

    }

    /// <summary>
    /// State monad operations
    /// </summary>
    public static class StateMonad
    {
        /// <summary>
        /// "return" monadic operator
        /// </summary>
        /// <typeparam name="S">Type of State</typeparam>
        /// <typeparam name="C">Type of Content</typeparam>
        /// <param name="content">Content</param>
        /// <returns>State monad</returns>
        public static StateMonad<S, C> Return<S, C>(C content)
        {
            return new StateMonad<S, C>(s => new Scp<S, C>(s, content));
        }

        /// <summary>
        /// "return" monadic operator
        /// </summary>
        /// <typeparam name="S">Type of State</typeparam>
        /// <typeparam name="C">Type of Content</typeparam>
        /// <param name="dummy">Dummy argument for type inference</param>
        /// <param name="content">Content</param>
        /// <returns>State monad</returns>
        public static StateMonad<S, C> Return<S, C>(S dummy, C content)
        {
            return new StateMonad<S, C>(s => new Scp<S, C>(s, content));
        }

        /// <summary>
        /// "bind" monadic operator
        /// </summary>
        /// <param name="m">State monad</param>
        /// <param name="selector">Selector function</param>
        /// <returns>State monad</returns>
        public static StateMonad<S, C2> SelectMany<S, C1, C2>(this StateMonad<S, C1> m, Func<C1, StateMonad<S, C2>> selector)
        {
            return new StateMonad<S, C2>(s =>
                {
                    var scp = m.S2Scp(s);
                    return selector(scp.Content).S2Scp(scp.State);
                });
        }

        /// <summary>
        /// "bind" monadic operator
        /// </summary>
        /// <param name="m">State monad</param>
        /// <param name="selector">Selector function</param>
        /// <param name="result">Map result function</param>
        /// <returns>State monad</returns>
        public static StateMonad<S, C2> SelectMany<S, C1, C2, K>(this StateMonad<S, C1> m, Func<C1, StateMonad<S, K>> selector, Func<C1, K, C2> result)
        {
            return m.SelectMany(x => selector(x).SelectMany(y => Return<S,C2>(result(x, y))));
        }

        /// <summary>
        /// Select method for Query Pattern
        /// </summary>
        /// <param name="m">State monad</param>
        /// <param name="selector">Selector function</param>
        /// <returns>State monad</returns>
        public static StateMonad<S, C2> Select<S, C1, C2>(this StateMonad<S, C1> m, Func<C1, C2> selector)
        {
            return new StateMonad<S, C2>(s => 
            {
                var scp = m.S2Scp(s);
                return new Scp<S, C2>(scp.State, selector(scp.Content));
            });
        }

        /// <summary>
        /// State monad "get state" function
        /// </summary>
        /// <typeparam name="S">Type of state</typeparam>
        public static StateMonad<S, S> Get<S>()
        {
            return new StateMonad<S, S>(s => new Scp<S, S>(s, s));
        }

        /// <summary>
        /// State monad "put state" function
        /// </summary>
        /// <typeparam name="S">Type of state</typeparam>
        /// <param name="s">New state</param>
        public static StateMonad<S, Unit> Put<S>(S s)
        {
            return new StateMonad<S, Unit>(_ => new Scp<S, Unit>(s, Unit.Value));
        }
    }

    /// <summary>
    /// Tree constructor
    /// </summary>
    public static class Tr
    {
        /// <summary>
        /// Creates new Leaf
        /// </summary>
        /// <typeparam name="T">Type of content</typeparam>
        /// <param name="content">Content of Leaf</param>
        /// <returns>Binary tree</returns>
        public static Tr<T> Lf<T>(T content)
        {
            return new Lf<T>(content);
        }

        /// <summary>
        /// Creates new Branch
        /// </summary>
        /// <typeparam name="T">Type of content</typeparam>
        /// <param name="left">Left subtree</param>
        /// <param name="right">Right subtree</param>
        /// <returns>Binary tree</returns>
        public static Tr<T> Br<T>(Tr<T> left, Tr<T> right)
        {
            return new Br<T>(left, right);
        }
    }

    /// <summary>
    /// Base class for binary tree node
    /// </summary>
    /// <typeparam name="T">Type of content</typeparam>
    public abstract class Tr<T>
    {
        protected const int Ident = 2;

        /// <summary>
        /// Print node
        /// </summary>
        /// <param name="level"></param>
        public abstract void Show(int level);
    }

    /// <summary>
    /// Branch of binary tree
    /// </summary>
    /// <typeparam name="T">Type of content</typeparam>
    public class Br<T> : Tr<T>
    {
        public Br(Tr<T> left, Tr<T> right)
        {
            Left = left;
            Right = right;
        }

        /// <summary>
        /// Left subtree
        /// </summary>
        public Tr<T> Left { get; private set; }

        /// <summary>
        /// Right subtree
        /// </summary>
        public Tr<T> Right { get; private set; }

        public override void Show(int level)
        {
            Console.Write(new String(' ', level * Ident));
            Console.WriteLine("Branch:");
            Left.Show(level + 1);
            Right.Show(level + 1);
        }
    }

    /// <summary>
    /// Leaf of binary tree
    /// </summary>
    /// <typeparam name="T">Type of content</typeparam>
    public class Lf<T> : Tr<T>
    {
        public Lf(T content)
        {
            Content = content;
        }

        /// <summary>
        /// Content
        /// </summary>
        public T Content { get; private set; }

        public override void Show(int level)
        {
            Console.Write(new String(' ', level * Ident));
            Console.Write("Leaf: ");
            Console.Write(Content);
            Console.WriteLine();
        }
    }

    class Program
    {
        /// <summary>
        /// Monadic tree labeling
        /// </summary>
        /// <typeparam name="T">Type of content</typeparam>
        /// <param name="tree">Binary tree</param>
        /// <returns>State monad with binary tree with label-contents pair</returns>
        static StateMonad<int, Tr<Scp<int,T>>> GetLabelMonad<T>(Tr<T> tree)
        {
            if (tree is Lf<T>)
            {
                var leaf = tree as Lf<T>;
                var m = from s in StateMonad.Get<int>()
                        from _ in StateMonad.Put(s + 1)
                        from r in StateMonad.Return(0 /*dummy arg*/, Tr.Lf(new Scp<int, T>(s, leaf.Content)))
                        select r;
                return m;
            }
            else if(tree is Br<T>)
            {
                var br = tree as Br<T>;
                var m = from l in GetLabelMonad(br.Left)
                        from r in GetLabelMonad(br.Right)
                        from res in StateMonad.Return(0 /*dummy arg*/, Tr.Br(l, r))
                        select res;
                return m;
            }
            else
            {
                throw new Exception("Invalid object type");
            }
        }

        static void Main(string[] args)
        {
            var tree = 
                Tr.Br
                (
                    Tr.Br(
                        Tr.Lf(1),
                        Tr.Br(Tr.Lf(2), Tr.Lf(3))
                         ),
                    Tr.Lf(4)
                );
            tree.Show(0);
            Console.WriteLine();

            var m = GetLabelMonad(tree);

            var res = m.S2Scp(0);
            
            Console.WriteLine(res.State);
            res.Content.Show(0);

            Console.ReadLine();
        }
    }
}


Если разберешься — появится желание забить на делфи и пойти учить цацкель.
Re[15]: Умирает ли Delphi?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 09.11.09 17:11
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, gandjustas, Вы писали:


G>>>>>>Что касается VCL, то она как была, так и остается GUI-ориентированной библиотекой для формоклепания.

BP>>>>>Странное замечание. Вообще то для этого она и создавалась.
G>>>>Проблема в том что у делфи ничего другого нет.
H>>>Давно на торри бывал?
G>>Понятия не имею что это... и не хочу даже знать.

H>А еще "...ничего другого нет", и почему я не удивлен

Так я говорил про VCL.

G>>А шрифты — дело вкуса, меня оно вообще не парит.

H>Разумеется, как косяк так сразу не парит. А юзеров твоих? Или их вообще никто не спрашивал, скормили энтерпрайзное овно они и давятся молча?
Да не, для энтерпрайза я уже много лет на вебе делаю.
Re[16]: Умирает ли Delphi?
От: hattab  
Дата: 09.11.09 18:19
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>>>>>Что касается VCL, то она как была, так и остается GUI-ориентированной библиотекой для формоклепания.

BP>>>>>>Странное замечание. Вообще то для этого она и создавалась.
G>>>>>Проблема в том что у делфи ничего другого нет.
H>>>>Давно на торри бывал?
G>>>Понятия не имею что это... и не хочу даже знать.

H>>А еще "...ничего другого нет", и почему я не удивлен

G>Так я говорил про VCL.

VCL это далеко не только гуй. VCL это прежде всего поддержка "визуального программирования", но это совсем не синоним формоклепательства. Ты должен был бы это знать, если, как ты говоришь, знаком с Delphi 8 лет.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.