Mohammad Hasani (@thebrodmann )

Mohammad Hasani

Bio Medical student, Futures neurosurgeon, FP zombie. Feel free to contact me! 😏 thebrodmann@gmail.com
Location Babol, Iran
Tweets 1,0K
Followers 88
Following 245
Account created 29-11-2018 04:40:33
ID 1068001743592611840

Twitter Web App : Hadi Aliakbar .. BeNYaMiN .. Scott Wlaschin اینجا من دارم همون state را بر میگردونم به علاوه یک todo اضافه تر ولی خب نمی تونم از black box مربوط به IO درش بیارم فعلا, اون تو گیر کرده تا وقتی که IO ران بشه و نمی تونم type signature رو هم تغییر بدم چون compiler متوجه میشه.

Twitter Web App : Hadi Aliakbar .. BeNYaMiN .. Scott Wlaschin خب اینجا مشکل از زبان هستش, فرض کن اگر من تایپ reducer ام باشه:
Action -> State
دیگه نمی تونیم IO ران کنم که! چون اگر کنم تایپ میشه:
Action -> IO State
اینجا توسعه دهنده هر چقدر هم مبتدی باشه نمیتونه از فیلتر type signature بگذره!

Twitter Web App : Hadi Aliakbar .. BeNYaMiN .. Scott Wlaschin فرض کن یک فانکشن داری که قراره از دیتابیس user رو با username برگردونه:
String -> User
خب عالی شد, ولی مشکل اینجاست من برای اینکه به دیتابیس ریکوئست بزنم به connection هم نیاز دارم:
Connection -> String -> User
خب من ناخواسته DI انجام دادم, چرا؟‌ چون راهی نداشتم جز pure بودن.

Twitter Web App : Hadi Aliakbar .. BeNYaMiN .. Scott Wlaschin درباره DI هم گفتی و باید بگم یکی از جاهایی که من واقعا به قدرت FP پی بردم همینجا بود, مفهومی که براش توی هر زبان فریمورک هست را میشه توی 20 خط (Reader Monad) و یک مفهوم ساده (Currying) خلاصه کرد.

Twitter Web App : Hadi Aliakbar .. BeNYaMiN .. Scott Wlaschin نکته مهم اینه که مفاهیم SOLID توی FP عموما معنی ندارن.
برخلاف SRP که هنوز سر تعریفش دعوا وجود داره توی FP از composition یاد میکنیم.
اما نکته جالب اینجاست که شما تقریبا توی FP باز مجبوری composition انجام بدی (مثلا برای pattern match یا recursion)

Twitter Web App : Hadi Aliakbar .. BeNYaMiN .. Scott Wlaschin برای همین گفتم:
oo - with great power comes great responsibility
fp - with great restriction comes great power

توی FP مجبورید قوانین را رعایت کنی (نمیتونی immutability رو کنار بزنی, بگی اینجا استفاده نمیکنم) ولی توی oo چطور؟‌ نه, مسئولیت خودت هستش که SOLID را رعایت کنی یا نه.

Twitter Web App : با من باشید در پروژه هر هفته یه اکستنشن VSCode
github.com/mehrad77/hubst…

Twitter Web App : یک پروژه اوپن سورس دیگه را دارم شروع میکنم.
میخوام برای Halogen یه devtool درست کنم تا وقتی آمدید سمت Purescript و Halogen لذت FP را با استئوبلاست (سلول های فعال بافت استخوان) هاتون حس کنید.
github.com/thebrodmann/ha…

Twitter Web App : ایشون هم Pseudomonas aeruginosa (سودوموناس آئروژینوزا) هستن. به راحتی داخل آب مقطر کلنی تشکیل میده و نه تنها ضعیف نمیشه بلکه خاصیت بیماری زایی بیشتری هم پیدا میکنه! :|

#because_life_finds_a_way twitter.com/sepidsal/statu…

Twitter Web App : ToTo جونيور کل گیت هاب عملا باهاش پیاده شده فکر کنم :D
من کلا از زبان های dynamic type دیگه بدم میاد, بس که به static type بودن چیزی مثل haskell و ts عادت کردم :D

Twitter Web App : بات رستم و هر سیستم دیگه اینجوری، یه معضل داره. متمرکزه. چیزی که به ظاهر قدرت باته، ولی در حقیقت چیزیه که باعث میشه هرگز ازش استفاده نکنم. دیتابیس در کنترل یه نفر و هیچ تضمینی نیست که نسخه دپلوی شده همون کد باشه، (تهمت نمیزنم، فقط مشکلات رو میگم). خلاصه من مشکل با سیستم ریپورت

Twitter Web App : #رشتو

معرفی «رستم بات»: آغازی بر پایان #اکانت_ناامن

لطفاً این رشته توییت درباره RostamBot رو تا انتها بخونید و برای اطلاع دیگران و همچنین رفع خستگی من، #ریتوییت کنید

rostambot.com