OOP'a ilginç bir bakış - sayfa 13

 
Dmitry Fedoseev :

Kapsamlı! Ne ekleyin ne de ekleyin))

Alaycılık anlaşılabilir, ancak yine de - bu temel bir farktır ve diğerleri zaten bunun sonuçlarıdır. Örneğin, değerleri değiştirilebilen değişkenlerin saf bir FP'sinde olmaması.

 
Dmitry Fedoseev :
Ve bu FP'ninişlev işaretçilerini kullanmaktan temelde farkı nedir?

FP'de atama yasaktır. Nesneler yalnızca oluşturulabilir ve kopyalanabilir.

 
Vasiliy Sokolov :

FP'de atama yasaktır. Nesneler yalnızca oluşturulabilir ve kopyalanabilir.

en azından tartışmanın 13. sayfasında bir şeyler netleşmeye başladı - YouTube'da birkaç video eğitimi izledim, bir tanesi FP şeklinde bazı yüksek sanatlar hakkında gevezelik etti))


Not: Bir makale yazdıysanız, "kırılgan zihinler" için yararlı olacağını düşünüyorum, makalelerinizdeki materyalleri sunma tarzı saygıyı hak ediyor (ya da icat etmiyorsanız makalelerinizi seviyorum))), elbette adminlerle anlaşmanız gerekiyor

 
Vasiliy Sokolov :

FP'de atama yasaktır. Nesneler yalnızca oluşturulabilir ve kopyalanabilir.

Yapamıyorsan, ama gerçekten istiyorsan, yapabilirsin) Sadece monadlarla uğraşmak zorundasın)

 
Igor Makanu :

Not: Bir makale yazdıysanız, "kırılgan zihinler" için yararlı olacağını düşünüyorum, makalelerinizdeki materyalleri sunma tarzı saygıyı hak ediyor (ya da icat etmiyorsanız makalelerinizi seviyorum))), elbette adminlerle anlaşmanız gerekiyor

Maalesef işe yaramayacak. İlk olarak, FP'yi anlamıyorum, daha çok temelleri. İkincisi, MQL ve FP farklı evrenlerdir. OP'yi MQL'ye adanmış pratik bir materyal olarak gizlemek için hiçbir neden yoktur.

 
Vasiliy Sokolov :

İkincisi, MQL ve FP farklı evrenlerdir. OP'yi MQL'ye adanmış pratik bir materyal olarak gizlemek için hiçbir neden yoktur.

Haskell dll'yi mt'ye bağlama hakkında bir makale yazın . FP'nin güvenli olduğunu ve finansman için neyin gerekli olduğunu açıklayın.

 
Peki, FP ile ilgili birkaç tez daha:
  • FP'de atama yasaktır. Nesneler yalnızca oluşturulabilir ve kopyalanabilir.
  • Saf Fonksiyonlar . f(a, b) = c ise. O zaman aynı a ve b için f'nin sonucu her zaman aynı olacaktır. Sonra kullanabilirsin   memoization : işlevin sonucu bir kez hesaplanır ve ardından anahtarı argümanlarından alır.
  • Köri . Bir f(a,b) işlevi varsa, o zaman f(a) -> f(b) (a bağımsız değişkenini alan ve b bağımsız değişkenini alan başka bir işlev döndüren bir işlev) olarak temsil edilebilir:
     public static Action< string > GreetingCarry( string g)
    {
        Action< string > pn = (b) => Console.WriteLine(g + " " + b);
         return pn;
    }
    
    var printGreetingAndName = GreetingCarry( "Hello" );
    printGreetingAndName( "Ivan" );
    printGreetingAndName( "Sergey" );
    
    >> Hello Ivan
    >> Hello Sergey
  • Yığındaki işlemler. Görevin yasak olması durumunda referans değişimi yapılmaz. Bu nedenle, nesneler doğrudan yığına tahsis edilir, dolayısıyla bunlar iş parçacığı için güvenlidir. Yığın üzerindeki nesnelere referans alışverişi yoktur (atama yasaktır). Bu nedenle, öbek üzerindeki bir nesneye erişim de yalnızca tek bir iş parçacığından gerçekleştirilir. Bu nedenle, nesnelere erişim, kutudan çıkar çıkmaz iş parçacığı için güvenlidir.
 
Rorschach :

Haskell dll'yi mt'ye bağlama hakkında bir makale yazın. FP'nin güvenli olduğunu ve finansman için neyin gerekli olduğunu açıklayın.

önemsiz nedir - MQL'de hemen Lisp :-)

Lisp lehçesinin uygulanmasında çok fazla kod olmaması harika ... küçük

bu eylemin sadece pratik anlamı gözlemlenmez. Prensip olarak, bu alandaki FP'nin gücüne ve talebine işaret ediyor.
 
Maxim Kuznetsov :

önemsiz nedir - MQL'de hemen Lisp :-)

Lisp lehçesinin uygulanmasında çok fazla kod olmaması harika ... küçük

bu eylemin sadece pratik anlamı gözlemlenmez. Prensip olarak, bu alandaki FP'nin gücüne ve talebine işaret ediyor.

sonra Clojure

Dilleri ifade ederek aramaya başladım, böylece klavede daha az ezilirdim. Bu, pitondan bile daha kısaydı. .net tabanlı bir versiyonu vardır ve net İnciller mt'ye 1 hamlede bağlanır.
 
Garip yazı stilleri konusunda. Koduma böyle bir bükülme ile rastladım.
 // Определение Offset-параметра в ЛК.
int GetOffset()
{
   const double Price = NormalizeDouble (Ask / 2 , _Digits );
   const double Lots = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN );
  
   const TICKET_TYPE Ticket = OrderSend ( _Symbol , OP_BUYLIMIT, Lots, Price, 0 , 0 , 0 , "RannForex LimitOffset Detected" );
  
   return ((Ticket > 0 ) && OrderSelect (Ticket, SELECT_BY_TICKET) ?
         ( int )((OrderOpenPrice() - Price) / _Point + OrderDelete(OrderTicket()) * 0.1 ) : 0 );
}