එෆ්ආර්පී ගැන බොහෝ පිටු කියවීමෙන් පසුව, එෆ්ආර්පී ගැන මෙම බුද්ධිමත් ලිවීම මට හමු විය , අවසානයේදී එෆ්ආර්පී යනු කුමක්ද යන්න මට වැටහුණි.
මම පහත සඳහන් කරන්නේ හෙන්රිච් අප්ෆෙල්මස් (ප්රතික්රියාශීලී කෙසෙල් කතුවරයා).
ක්රියාකාරී ප්රතික්රියාශීලී වැඩසටහන්කරණයේ සාරය කුමක්ද?
පොදු පිළිතුරක් වනුයේ “එෆ්ආර්පී යනු විකෘති තත්වයක් වෙනුවට කාල වෙනස්වන කාර්යයන් අනුව පද්ධතියක් විස්තර කිරීමයි”, එය නිසැකවම වැරදිය. මෙය අර්ථකථන දෘෂ්ටිකෝණයයි. නමුත් මගේ මතය අනුව, ගැඹුරු, වඩා තෘප්තිමත් පිළිතුර පහත දැක්වෙන තනිකරම සින්ටැක්ටික් නිර්ණායකයෙන් ලබා දී ඇත:
ක්රියාකාරී ප්රතික්රියාශීලී ක්රමලේඛනයේ සාරය නම් ප්රකාශ කරන අවස්ථාවේ දී අගයක ගතික හැසිරීම සම්පූර්ණයෙන්ම නියම කිරීමයි.
උදාහරණයක් ලෙස, කවුන්ටරයක උදාහරණය ගන්න: ඔබට “ඉහළ” සහ “පහළට” යනුවෙන් ලේබල් කර ඇති බොත්තම් දෙකක් ඇති අතර ඒවා කවුන්ටරය වැඩි කිරීමට හෝ අඩු කිරීමට භාවිතා කළ හැකිය. අත්යවශ්යයෙන්ම, ඔබ මුලින් ආරම්භක අගයක් නියම කර බොත්තමක් එබූ සෑම විටම එය වෙනස් කරයි; මේ වගේ දෙයක්:
counter := 0 -- initial value
on buttonUp = (counter := counter + 1) -- change it later
on buttonDown = (counter := counter - 1)
කාරණය වන්නේ ප්රකාශ කරන අවස්ථාවේදී, කවුන්ටරය සඳහා ආරම්භක අගය පමණක් දක්වා ඇති බවයි; කවුන්ටරයේ ගතික හැසිරීම සෙසු වැඩසටහන් පෙළෙහි ගම්ය වේ. ඊට හාත්පසින්ම වෙනස්ව, ක්රියාකාරී ප්රතික්රියාකාරී ක්රමලේඛනය ප්රකාශ කරන අවස්ථාවේ දී සමස්ත ගතික හැසිරීම නියම කරයි, මේ ආකාරයට:
counter :: Behavior Int
counter = accumulate ($) 0
(fmap (+1) eventUp
`union` fmap (subtract 1) eventDown)
කවුන්ටරයේ ගතිකතාවයන් ඔබට තේරුම් ගැනීමට අවශ්ය සෑම විටම, ඔබ කළ යුත්තේ එහි අර්ථ දැක්වීම දෙස පමණි. එයට සිදුවිය හැකි සෑම දෙයක්ම දකුණු පැත්තේ දිස්වනු ඇත. මෙය පසුව ප්රකාශයට පත් කළ අගයන්හි ගතික හැසිරීම වෙනස් කළ හැකි අත්යවශ්ය ප්රවේශයට වඩා බෙහෙවින් වෙනස් ය.
ඉතින්, මගේ අවබෝධය අනුව FRP වැඩසටහන යනු සමීකරණ සමූහයකි:
j
විවික්තයි: 1,2,3,4 ...
f
රඳා පවතින්නේ t
මෙය බාහිර උත්තේජක ආකෘතිකරණය කිරීමේ හැකියාව ඇතුළත් කරයි
වැඩසටහනේ සියලුම තත්වය විචල්යයන්ගෙන් සංයුක්ත වේ x_i
මෙම FRP පුස්තකාල සේවා කාලය හැමදා, වෙනත් වචන වලින් කිවහොත්, ගැනීම ගනී j
කිරීමට j+1
.
මෙම වීඩියෝව තුළ මම මෙම සමීකරණ වඩාත් විස්තරාත්මකව විස්තර කරමි .
සංස්කරණය කරන්න:
මුල් පිළිතුරෙන් වසර 2 කට පමණ පසු, මෑතකදී මම නිගමනය කළේ FRP ක්රියාත්මක කිරීම සඳහා තවත් වැදගත් අංගයක් ඇති බවයි. ඔවුන්ට වැදගත් ප්රායෝගික ගැටළුවක් විසඳීමට (සහ සාමාන්යයෙන්) අවශ්ය වේ: හැඹිලි අවලංගු කිරීම .
x_i
-S සඳහා වන සමීකරණ මඟින් පරායත්ත ප්රස්ථාරයක් විස්තර කෙරේ. මෙම සමහර විට x_i
අවස්ථාවේ දී වෙනස් j
අනතුරුව සියලු නොවේ x_i'
දී අගයන් j+1
අවශ්ය යාවත්කාලීන කළ යුතු, ඒ නිසා නොවන සියලු පරායත්තයන් සමහර නිසා දැන් සිදු කළ යුතු x_i'
සිට ස්වාධීන විය හැකි x_i
.
තවද, x_i
වෙනස් වන -s වැඩි වැඩියෙන් යාවත්කාලීන කළ හැකිය. උදාහරණයක් ලෙස ගේ සිතියමක් මෙහෙයුම අපි දැන් සලකා බලමු f=g.map(_+1)
එහිදී Scala, දී f
හා g
ය List
ක Ints
. මෙන්න f
අනුරූප වේ x_i(t_j)
සහ g
වේ x_j(t_j)
. දැන් මම මූලද්රව්යයක් සූදානම් කරන්නේ g
නම්, එහි ඇති map
සියලුම මූලද්රව්ය සඳහා මෙහෙයුම සිදු කිරීම නාස්තියකි g
. සමහර FRP ක්රියාත්මක කිරීම් (උදාහරණයක් ලෙස reflex-frp ) මෙම ගැටළුව විසඳීම අරමුණු කරයි. මෙම ගැටළුව වර්ධක පරිගණකකරණය ලෙසද හැඳින්වේ .
වෙනත් වචන වලින් කිවහොත්, x_i
එෆ්ආර්පී හි හැසිරීම් ( -s) හැඹිලි ගණනය කිරීම් ලෙස සිතිය හැකිය. x_i
සමහර f_i
-s වෙනස් වුවහොත් මෙම හැඹිලි (s ) කාර්යක්ෂමව අවලංගු කර නැවත ගණනය කිරීම FRP එන්ජිමේ කාර්යය වේ .