рдПрдХ рдЖрджрд░реНрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рдг рджреГрд╖реНрдЯрд┐

рдЖрдЧреЗ рдХрд╛ рдкрд╛рда рдореЗрд░рд╛ рдирдЬрд╝рд░рд┐рдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдкрд░ рдПрдХ рдирдпрд╛ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдХреБрдЫ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдореИрдВ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛ "рднрд╛рд╖рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдереЛрдбрд╝реА рджреЗрд░ рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП", рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред PS рдореБрдЭреЗ рдПрдХ рдмрд╛рд░ рдЕрдкрдиреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдереА, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред


рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рдХрд╛ рдкреНрд░рднрд╛рд╡


рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдореБрдЭреЗ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рд▓реЗрдЦрдХ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдЖрдпрд╛, рдФрд░ рдпрд╣ рднрд╛рд╖рд╛ рдЗрд╕рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдирд┐: рд╢реБрд▓реНрдХ рдкрд╛рд╕реНрдХрд▓ рдХреЗ рд╕рдорд╛рди рд╕рдВрджрд┐рдЧреНрдз рд░реВрдк рд╕реЗ рдмрджрд▓ рдЧрдИ, рдЬрд┐рд╕ рдкрд░ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╡реАрдПрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдпрд╣ рдХреЛрдИ рд╕рдВрдпреЛрдЧ рдирд╣реАрдВ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдЬреЛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦреА рдереА, рд╡рд╣ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реА рдереАред рд╣рдо рд╕реНрд╡рдпрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрднрд╡ рд╡рд╛рд▓реЗ рдПрдХ рдмрд╛рд╣рд░реА рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХреА рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред


рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЛрдЪ рдХрд╛ рдврд╛рдВрдЪрд╛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рднрд╛рд╖рд╛ рдП рдореЗрдВ, рдЖрдк рдмреА рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рдХреА рддрд╛рдХрдд рдФрд░ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдЧрд░реВрдХрддрд╛ рднреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреА рднрд╛рд╖рд╛ рдмрдирд╛рдиреЗ рдФрд░ рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдКрдкрд░ рдХреЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд▓реЛрдЧреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдереЗред рдореИрдВрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╢рд░реНрддреЛрдВ рдХреЗ рднреАрддрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдиреАрдЪреЗ рдореИрдВ рдЙрд╕ рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕реЗ рдореИрдВ "рдЖрджрд░реНрд╢" рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред


рдореЗрд░рд╛ рдЕрдиреБрднрд╡: рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдкрд╛рд╕реНрдХрд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреА рдереА, рдмрд╛рдж рдореЗрдВ рдореИрдВ рдЬрд╛рд╡рд╛, рдХреЛрдЯрд▓рд┐рди, рд╕реА ++, рдкрд╛рдпрдерди, рд╕реНрдХреАрдо рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдЖ, рдФрд░ рдореИрдВ рд╕реНрдХрд╛рд▓рд╛ рдХреЛ рдореБрдЦреНрдп рднрд╛рд╖рд╛ рдорд╛рдирддрд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрд░реА "рдкрд░рд┐рдкреВрд░реНрдг" рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрдХрд╛рд▓рд╛ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╛рдирддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ)


рдХреЛрдб рд╢реИрд▓реА рдкрд░ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХрд╛ рдкреНрд░рднрд╛рд╡


"рдЖрдк рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдлреЛрд░рдЯреНрд░рд╛рди рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ"


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд░рд▓ рдФрд░ рдЫреЛрдЯрд╛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рджреВрд╕рд░реЛрдВ рдкрд░ рд╣рд╛рд╡реА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдХреЛрдб рдЙрджрд╛рд╣рд░рдг (рдореИрдВрдиреЗ рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА, рдпрд╣ рдХреЗрд╡рд▓ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣реИ)


рдЕрдЬрдЧрд░:


filtered_lst = [elem for elem in lst if elem.y > 2]
filtered_lst = list(filter(lambda elem: elem.y > 2, lst))

, . , .


Scala:


val filteredLst = lst.filter(_.y > 2)

, . . , it => it.y > 2, .


, lst.map(_.x).filter(_>0).distinct() , , . , .


[elem for elem in , . , - .


... = set(filter(lambda it: it > 2, map(lambda it: it.x, lst))))

!


lst.filter(...).map(...) , , . , numpy max тАФ . , , - .


, java:


int x = func();
final int x = func();

, , , . Rust , .


let x = 1;
let mut x = 1;

, , . . ++, , template, typename, inline, virtual, override, const, constexpr "" .



, , , , .


. , , , . , . , - , , .


, , . , hashmap -.


, . - , . (, - , , )


тАФ must have . , , . тАФ , .


Unit, void


/delphi ( ) (- ). , . . ? , . , Java, ++ . : " void!" , void , , . , Java HashSet<T> HashMap<T, Boolean>. boolean тАФ , . , HashMap , , . /++ sizeof(void).


, Unit, 0 ( , , Unit, ). , , . HashSet<T> HashMap<T, Unit> .



- , , , . , . ?! , :


  • тАФ . - .
  • , . .

, "" тАФ , , .


std::tuple ++, , , , , (T1, T2). (, Unit ). T => U, T U тАФ - . , - Unit, , . , , . , .


Union, / , - . scala/kotlin/rust тАФ .


val a = 10 * 24 * 60 * 60
val b = {
    val secondsInDay = 24 * 60 * 60
    val daysCount = 10
    daysCount * secondsInDay
}

Enums, Union Tagged Union


, , , , go.


-, -. , . , 0 , true (1) false (0) . . , , - success | fail ok|failReason1 | failReason2.


, -, . , ok | error(code) Pointer[MyAwesomeClass] |null .


-. . Union Tagged Union , , int | int. Union int | int == int, . - union . int | int tagged union , int тАФ .



, - (Union), .


List(x) = Unit | (x, List(x))

.
- ( ), , :


f(x) = 1 + x * f(x)

, f(x) = 1 + x + x*x + x*x*x + ..., - () -


List(x) = Unit | (x, Unit) | (x, (x, Unit)) | ...  = Unit | x | (x, x) | (x, x, x) | ...

C x = , x, , ...


, (x, Unit) == x, x * 1 = x, (x, (x, (x, Unit))) (x, x, x).


, , , , , ( ), . , . , тАФ , ++ -, .


, - , , - (). (A, B | C) == (A, B) | (A, C)



, , . .


  1. , "" , - (, )
  2. , .
  3. , .

2 3 , : , ++ . - , , .
тАФ , -, . - . тАФ final java.


, 1-2 /. , , . , "" тАФ , , , , .
( , jvm , const)


, тАФ . , D. - static value = func(42); .



- gradle, , , build "wtf? ?"


android {
    compileSdkVersion 28
}

Groovy. android { compileSdkVersion 28}, - - , . groovy тАФ , .


, , -


class UnderlyingAndroid(){
     compileSdkVersion: Int = 42
}

fun android(func: UndelyingAndroid.() -> Unit) ....

, -, / UnderlyingAndroid, .


, :


android { it =>
    it.compileSdkVersion = 28
}

! ? + DSL. , gradle , . , .


extension . , . , . - . тАФ . , T, , sum, , T .


Call-by-name


, , . , map.getOrElse(key, new Smth()) , . , assert(cond, makeLogMessage()) .


, тАФ , assert if (cond) { log(makeLogMessage())}, .


, must have , .


----


. "" , "" , , . , .



, . , , . , , . , int long.


?


. , . ( , ++). , ( ) .


, ,


. ++ , T - . , , rvalue-, const. , , , . - Scala Kotlin, "" , .



# тАФ , - . ( , # Unity) , , . 3 ! , , , - . , тАФ .


kotlin/scala тАФ , . , . , .


тАФ inline C++/Kotlin. ! inline , inline , (++) return (kotlin). forced_inline__, noinline, crossinline, - . , , inline , .



, . . , ++ , , . lisp scheme, , .



. - - , тАФ , - . : , "" .


Substructural type system


, . , , , .
? Move- , . , . , , - /, . , () .


- , - , .



, , , . , , , , 5, 3, , .



-, . -, (, ), . , ( ++ ).
, , , . - , .



, , :


  • ,
    • -
    • , .

    • .
    • ()
    • ide .
  • extension- .
  • , AST

/ , , .


, . , .


, тАФ .

Source: https://habr.com/ru/post/hi435300/


All Articles