1. Куча / Говнокод #15889

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    open System
     
    let inline un激辛カレー<'a> (f:obj) (tuple:obj) =
      match tuple with
      | :? ('a * 'a * 'a) as tuple -> 
        let a , b , c = tuple
        match f with
        | :? ('a -> 'a -> 'a -> 'a) as f -> f a b c
        | _ -> failwith "type did not matched! 3"
      | :? ('a * 'a) as tuple ->
        let a,b = tuple
        match f with
        | :? ('a -> 'a -> 'a) as f -> f a b
        | _ -> failwith "type did not matched! 2"
      | :? 'a as tuple ->
        let a = tuple
        match f with
        | :? ('a -> 'a) as f -> f a
        | _ -> failwith "type did not matched! 1"
      | _ -> failwith "type did not matched! tuple"
     
    printfn"%A"<| un激辛カレー<float> (fun x->x + 1.) 2.
    printfn"%A"<| un激辛カレー<int> (+) (10,10)
    printfn"%A"<| un激辛カレー<string> (fun (x:string) y z->x + y + z) ("How ","are ","you?")

    Запостил: HaskellGovno, 03 Мая 2014

    Комментарии (5) RSS

    • Страна восходящего солнца вышла на рынок
      Ответить
      • Кстати, в Японии Хаскелл в школах преподают на информатике. У них это вроде как Паскаль в русских школах был (не знаю, что сегодня - наверное Ява).
        Ответить
    • Если кому интересно, то это uncurry для "произвольного" числа аргументов.
      Ответить
    • 激辛 - extremely hot (spicy);
      Тонко.
      Ответить
    • Да в языке без перегрузки это нафиг не нужно. uncurry uncurry3 uncurry4 и тд. А тут ещё и рантаймовый оверхед добавили
      Ответить

    Добавить комментарий