لغة كامل الموضوعية كثافة العمليات والقيم السلبية

StackOverflow https://stackoverflow.com/questions/1613793

  •  06-07-2019
  •  | 
  •  

سؤال

ونظرا لهذا مقتطف من شفرة لغة كامل الموضوعية:

let rec range a b =
  if a > b then []
  else a :: range (a+1) b
  ;;

ووREPL يقول لي انه من نوع هو:

val range : int -> int -> int list = <fun>

ويعطيها المدخلات مثل:

range 0 4;;

ويعيد القائمة:

- : int list = [0; 1; 2; 3; 4]

ولكن توفير المدخلات

range -4 2;;

ويعطي الخطأ:

Characters 0-5:
  range -4 1;;
 ^^^^^
This expression has type int -> int -> int list but is here used with type int.

ما هو هذا تحاول أن تقول لي؟

هل كانت مفيدة؟

المحلول

وعندما تكتب،

range -4 2;;

وعليك أن تتذكر أن - هي وظيفة، وظيفة أقحم، وليس نفي أحادي.

لقيام نفي أحادي يمكنك القيام به واحد من أمرين، 1) preceede - علامة مع ~، ~ مثل -4، أو استخدام قوسين

نصائح أخرى

وأنا فقط أدركت أنني بحاجة إلى التفاف

-4 in parenthesis

وأي الدعوة:

range (-4) 0;;

ويعطي:

- : int list = [-4; -3; -2; -1; 0]

وسأترك هذا السؤال حتى طارئ أي شخص آخر يأتي عبر نفس القضية.

وفقط لتلخيص القضية وفسر ذلك - بوصفها وظيفة وليس علامة 4 رمزية.

ويمكنك أن ترى: لغة كامل الموضوعية قضايا اللغة للحصول على مزيد من المعلومات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top