-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
مشكلة في التحويل بين الأنواع، نص
و عدد
#38
Comments
نص
و عدد
قيمة ن هنا
والنفترض أن تكون القيمة هنا نفسها،
|
لغة ألف صممت منذ البداية بتحويل الأعداد إلى نصوص عند الحاجة بشكل آلي، لدى فكل النواتج المذكورة هي صحيحة، مثلا:
تصبح بشكل آلي
تصبح بشكل آلي
|
واذا اراد شخص طباعة عمليات رياضية جمع رقمين او طرح، ماذا نفعل ؟
الناتج يكون 67 كيف نجعله يطبع 13 |
شخص ما عليه إضافة دالة تحويل عدد إلى نص هنا:
https://github.com/alifcommunity/compiler/blob/main/aliflib/alifstandardlib.alif
ستعمال
|
فكرة التحويل إلى نص تلقائيا للأعداد قبل الجمع في حالة
|
حتى إن كودا كهذا يحول الأرقام أولا لنصوص. عكس ما يُتوقع.
|
أشكركم على مشاركة هذا ، وأنا أعلم ذلك ، ولكن تم تصميم ألف بطريقة معينة لا تشبه اللغات الأخرى. ولكن لتسهيل الأمور على المستخدم ، يمكننا تغيير تصميم Alif core لإصلاح هذه المشكلة. |
helloworld.alif
ترجمة
فتح الملف
الكود الحالي
الكود المطلوب
|
أرى ألا نجعل هدفُ جعل اللغة مميزة ومتفردة أن نجعلها غريبة وصادمة في قواعدها. عندما قلت "عكس ما يُتوقع" كان قصدي أنا مخالفة للمنطق أو بتعبير آخر عكس الفطرة البرمجية، كطريقة تفكيرنا في قواعد لغة البرمجة أو حتى اللغات الطبيعية parser tree، فعملية الجمع يفترض أن تتم قبل عملية تعيين القيمة للمتغير يمكن أن افترض أن طريقة عمل اللغة في هذه الحالة أن يحول كل القيم لنص ثم دمجها مع التي تليها تِباعا
في حالة وجود أقواس:
وفي حالة وجود دالة:
هكذا تكون لغة منضبطة في قواعدها، مع التمسك برأيي أن القاعدة نفسها غريبة ومخالفة للفطرة البرمجية...
|
سنقع في تعقيدات أخرى عندما نضع ترتيب العمليات واتجاهها، عملية الجمع تأتي من اليسار لليمين ltr في كل اللغات، فما تتوقعه الفطرة البرمجة أن يكون أداء ألف هكذا:
في حالة وجود أقواس:
وفي حالة وجود دالة:
|
❤️ 👍 |
أنا أتفق معك ، لكن لا يمكنني إعادة إنتاج ما قلته بلغة C ++. هل يمكنك أن تعطيني مثالا من فضلك؟ |
|
أعتقد أن هناك سوء فهم، كل ما قلته تم بالفعل إذا كان المتغير عدد. مشكلتنا الآن هي عندما يكون المتغير نص.
|
#include <iostream>
#include <string.h>
using namespace std;
void alifprint(string s){
std::cout << s << endl;
}
int main() {
int n = 1 + 2 + (3 + 4) + 5; // OK
// تؤدي العرض المطلوب فعلا
// التحويل للنص هو آخر الخطوات
string s = to_string(1 + 2 + (3 + 4) + 5);
alifprint(s);
return 0;
} الخطوات: string s = to_string(1 + 2 + (3 + 4) + 5);
string s = to_string(3 + (3 + 4) + 5);
string s = to_string(3 + 7 + 5);
string s = to_string(10 + 5);
string s = to_string(15);
string s = "15"; |
نعم، ولهذا السبب إقترحت إنشاء دالة جديدة لهذا الغرض إلى_نص(6+7) |
بدلا من تغيير شكل وتصميم اللغة وهذا يتطلب وقت. لنتركها هكذا مثل باقي اللغات، كل ما علينا فعله هو إنشاء دالة إلى_نص هل تتفق معي؟ |
بدون إنشاء دالة جديدة، لغة ألف على حسب علمي ديناميكية، فلندع التحويل يجري تلقائيا. إجراء كل العمليات أولا ثم تحويل الناتج لنص، وهذا يحصل عن طريق كا اقترحته يا حسن:
المطلوب هو:
|
لا داعي لإنشاء دالة 'إلى_نص' مثلا نص ن = نص(15) عدد ع = عدد("15") |
@AhmedElTabarani
عدد، و نص، ليسا كائنين في لغة ألف، لذلك لا يوجد مُنشئ كائن. |
بما أننا نحول كود ألف إلى سي++، فربما يمكمننا هذا عن طريق تحويل التعبير الدالة |
جاري تطوير نسخة جديدة بتغيير داخلي جذري، حيث لاوجود ل ' نص ' أو ' عدد '، وإنما ' متغير ' حيث هو عبارة عن كائن يقبل ويعطي كل أنواع البيانات، شيئ ما شبيه بخورزميات عمل جافاسكريبت. |
يخرج الناتج كهذا
او في عملية الطرح
يخرج الناتج كهذا
The text was updated successfully, but these errors were encountered: