Value restriction
ಹಿಂಡ್ಲೆ-ಮಿಲ್ನರ್ ಪ್ರಕಾರದ ತೀರ್ಮಾನ ಮತ್ತು ಅನಿವಾರ್ಯ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹೊಂದಿರುವ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ, ನಿರ್ದಿಷ್ಟವಾಗಿ ಎಂಎಲ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಕುಟುಂಬದಲ್ಲಿ, ಮೌಲ್ಯ ನಿರ್ಬಂಧವು ಎಂದರೆ ಘೋಷಣೆಗಳು ವಾಕ್ಯರಚನೆಯ ಮೌಲ್ಯಗಳಾಗಿದ್ದರೆ (ವಿಸ್ತರಿಸದವು ಎಂದೂ ಕರೆಯಲ್ಪಡುತ್ತವೆ) ಅವುಗಳನ್ನು ಬಹುರೂಪವಾಗಿ ಸಾಮಾನ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ. ಮೌಲ್ಯದ ನಿರ್ಬಂಧವು ಉಲ್ಲೇಖ ಕೋಶಗಳನ್ನು ವಿವಿಧ ರೀತಿಯ ಮೌಲ್ಯಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವುದನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ಪ್ರಕಾರದ ಸುರಕ್ಷತೆಯನ್ನು ಕಾಪಾಡುತ್ತದೆ. ಹಿಂದ್ಲೆ-ಮಿಲ್ನರ್ ಪ್ರಕಾರದ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ, ನಿಯತಾಂಕ ಬಹುರೂಪತೆಯ ಮೂಲಕ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಅನೇಕ ವಿಧಗಳಲ್ಲಿ ನೀಡಬಹುದು. ಆದರೆ ನಿಷ್ಕಪಟವಾಗಿ ಉಲ್ಲೇಖಗಳಿಗೆ ಅನೇಕ ವಿಧಗಳನ್ನು ನೀಡುವುದು ಸುರಕ್ಷತೆಯ ಪ್ರಕಾರವನ್ನು ಮುರಿಯುತ್ತದೆ. ಎಂಎಲ್-ರೀತಿಯ ಭಾಷೆಗಳಲ್ಲಿ ಉಲ್ಲೇಖಗಳು ಮತ್ತು ಸಂಬಂಧಿತ ನಿರ್ವಾಹಕರಿಗೆ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಟೈಪ್ ಮಾಡುವ ನಿಯಮಗಳಾಗಿವೆ. ನಿರ್ವಾಹಕರು ಈ ಕೆಳಗಿನ ಶಬ್ದಾರ್ಥಗಳನ್ನು ಹೊಂದಿರುತ್ತಾರೆಃ ಒಂದು ಮೌಲ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಆ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿರುವ ಉಲ್ಲೇಖವನ್ನು ರಚಿಸುತ್ತದೆ, (ಉಲ್ಲೇಖವು) ಒಂದು ಉಲ್ಲೇಖವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಆ ಉಲ್ಲೇಖದಲ್ಲಿನ ಮೌಲ್ಯವನ್ನು ಓದುತ್ತದೆ, ಮತ್ತು (ನಿಯೋಜನೆ) ಹೊಸ ಮೌಲ್ಯವನ್ನು ಹೊಂದಲು ಒಂದು ಉಲ್ಲೇಖವನ್ನು ನವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಘಟಕ ಪ್ರಕಾರದ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಇವುಗಳನ್ನು ಗಮನಿಸಿದರೆ, ಈ ಕೆಳಗಿನ ಪ್ರೋಗ್ರಾಂ c: = (fn x => x + 1);! c ನಿಜವಾದ ಅಂತ್ಯದಲ್ಲಿ ಬೂಲಿಯನ್ value.let ವ್ಯಾಲ್ c = ರೆಫ್ (fn x => x) ಗೆ ಪೂರ್ಣಾಂಕಗಳಿಗೆ ಉದ್ದೇಶಿಸಲಾದ ಕಾರ್ಯವನ್ನು ಅಸಮಂಜಸವಾಗಿ ಅನ್ವಯಿಸುತ್ತದೆ. ಮೇಲಿನ ಪ್ರೋಗ್ರಾಂ ಪ್ರಕಾರವು ಹಿಂಡ್ಲೆ-ಮಿಲ್ನರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪರಿಶೀಲಿಸುತ್ತದೆ ಏಕೆಂದರೆ c ಗೆ ಪ್ರಕಾರವನ್ನು ನೀಡಲಾಗಿದೆ, ನಂತರ ನಿಯೋಜನೆಯನ್ನು c: = (fn x => x + 1) ಎಂದು ಟೈಪ್ ಮಾಡುವಾಗ ಅದು ಆ ರೀತಿಯದ್ದಾಗಿದೆ ಎಂದು ತ್ವರಿತವಾಗಿ ದೃಢೀಕರಿಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಉಲ್ಲೇಖವನ್ನು ಟೈಪ್ ಮಾಡುವಾಗ ಉಲ್ಲೇಖಿಸಿ! c ನಿಜ. ಮೌಲ್ಯದ ನಿರ್ಬಂಧವು ಮೌಲ್ಯದ ನಿರ್ಬಂಧದ ಅಡಿಯಲ್ಲಿ, ಅಭಿವ್ಯಕ್ತಿಗಳು ವಾಕ್ಯರಚನೆಯ ಮೌಲ್ಯಗಳಾಗಿದ್ದರೆ ಮಾತ್ರ ಲೆಟ್ ಬೌಂಡ್ ಅಭಿವ್ಯಕ್ತಿಗಳ ಪ್ರಕಾರಗಳನ್ನು ಸಾಮಾನ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ. ತನ್ನ ಪ್ರಬಂಧದಲ್ಲಿ, ರೈಟ್ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ವಾಕ್ಯರಚನೆಯ ಮೌಲ್ಯಗಳೆಂದು ಪರಿಗಣಿಸಿದ್ದಾರೆಃ ಸ್ಥಿರಾಂಕಗಳು, ಅಸ್ಥಿರಗಳು,-ಅಭಿವ್ಯಕ್ತಿಗಳು ಮತ್ತು ಮೌಲ್ಯಗಳಿಗೆ ಅನ್ವಯವಾಗುವ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ಗಳು. ಕಾರ್ಯ ಮತ್ತು ನಿರ್ವಾಹಕ ಅನ್ವಯಗಳನ್ನು ಮೌಲ್ಯಗಳೆಂದು ಪರಿಗಣಿಸಲಾಗುವುದಿಲ್ಲ. ನಿರ್ದಿಷ್ಟವಾಗಿ, ಆಪರೇಟರ್ನ ಅನ್ವಯಗಳನ್ನು ಸಾಮಾನ್ಯೀಕರಿಸಲಾಗಿಲ್ಲ. ವಾಕ್ಯರಚನೆಯ ಮೌಲ್ಯಗಳ ಪ್ರಕಾರದ ಅಸ್ಥಿರಗಳನ್ನು ಸಾಮಾನ್ಯೀಕರಿಸುವುದು ಸುರಕ್ಷಿತವಾಗಿದೆ ಏಕೆಂದರೆ ಅವುಗಳ ಮೌಲ್ಯಮಾಪನವು ಉಲ್ಲೇಖಕ್ಕೆ ಬರೆಯುವಂತಹ ಯಾವುದೇ ಅಡ್ಡಪರಿಣಾಮಗಳನ್ನು ಉಂಟುಮಾಡುವುದಿಲ್ಲ. ಮೇಲಿನ ಉದಾಹರಣೆಯನ್ನು ಈ ಕೆಳಗಿನಂತೆ ಮೌಲ್ಯ ನಿರ್ಬಂಧದ ಅಡಿಯಲ್ಲಿ ಟೈಪ್ ಚೆಕರ್ ತಿರಸ್ಕರಿಸುತ್ತದೆ. ಮೊದಲ ಸಿ ಪ್ರಕಾರವನ್ನು ನೀಡಲಾಗಿದೆ. ಈ ಪ್ರಕಾರವನ್ನು ಸಾಮಾನ್ಯೀಕರಿಸಲಾಗಿಲ್ಲ ಮತ್ತು ಇದು ಲೆಟ್ ಬೈಂಡಿಂಗ್ ನ ಮುಖ್ಯ ಭಾಗಕ್ಕೆ ಟೈಪಿಂಗ್ ಸಂದರ್ಭದಲ್ಲಿ ಉಚಿತ ವೇರಿಯೇಬಲ್ ಆಗಿದೆ. ನಿಯೋಜನೆಯನ್ನು ಟೈಪ್ ಮಾಡಿದಾಗ, ಏಕೀಕರಣದ ಮೂಲಕ ಟೈಪ್ ಮಾಡುವ ಸಂದರ್ಭದಲ್ಲಿ ಸಿ ಪ್ರಕಾರವನ್ನು ಮಾರ್ಪಡಿಸಲಾಗುತ್ತದೆ. ಡೆರೆಫೆರೆನ್ಸ್! ಸಿ ಅನ್ನು ಹೀಗೆ ಟೈಪ್ ಮಾಡಲಾಗುತ್ತದೆ, ಆದರೆ ಪ್ರಕಾರದ ಮೌಲ್ಯಕ್ಕೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಟೈಪ್ ಚೆಕರ್ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ. ಹಿಂದ್ಲೆ-ಮಿಲ್ನರ್ ಪ್ರಕಾರದ ಉಲ್ಲೇಖಗಳು ಮ್ಯಾಡ್ಸ್ ಟೋಫ್ಟೆ (1988) ಅನ್ನು ಸಹ ನೋಡಿ. ಆಪರೇಷನಲ್ ಸೆಮಾಂಟಿಕ್ಸ್ ಮತ್ತು ಪಾಲಿಮಾರ್ಫಿಕ್ ಟೈಪ್ ಇನ್ಫರೆನ್ಸ್. ಪಿಎಚ್ಡಿ ಪ್ರಬಂಧ. ಎಂ. ಟೋಫ್ಟೆ (1990). "ಪಾಲಿಮಾರ್ಫಿಕ್ ಉಲ್ಲೇಖಗಳಿಗಾಗಿ ತೀರ್ಮಾನವನ್ನು ಟೈಪ್ ಮಾಡಿ". ಓ 'ಟೂಲ್ (1990). "ಉಲ್ಲೇಖಕ್ಕಾಗಿ ಅಮೂರ್ತ ನಿಯಮಗಳನ್ನು ಟೈಪ್ ಮಾಡಿಃ ಕುಖ್ಯಾತಿಯನ್ನು ಸಾಧಿಸಿದ ನಾಲ್ವರ ಹೋಲಿಕೆ". ಕ್ಸೇವಿಯರ್ ಲೆರಾಯ್ ಮತ್ತು ಪಿಯರೆ ವೈಸ್ (1991). "ಪಾಲಿಮಾರ್ಫಿಕ್ ಪ್ರಕಾರದ ತೀರ್ಮಾನ ಮತ್ತು ನಿಯೋಜನೆ". ಪಿಒಪಿಎಲ್ '91. ಎ. ಕೆ. ರೈಟ್ (1992). "ಪರಿಣಾಮದ ತೀರ್ಮಾನದ ಮೂಲಕ ಉಲ್ಲೇಖಗಳನ್ನು ಟೈಪ್ ಮಾಡುವುದು". ಮೈ ಹೋಂಗ್, ಜಾನ್ ಸಿ. ಮಿಚೆಲ್ ಮತ್ತು ರಮೇಶ್ ವಿಶ್ವನಾಥನ್ (1993). "ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಎಂಎಲ್-ಎನ್ಜೆ ದುರ್ಬಲ ಬಹುರೂಪತೆ ಮತ್ತು ಕಡ್ಡಾಯ ರಚನೆಗಳು". ಆಂಡ್ರ್ಯೂ ರೈಟ್ (1995). "ಸರಳ ಅನಿವಾರ್ಯ ಬಹುರೂಪತೆ". LISP ಮತ್ತು ಸಾಂಕೇತಿಕ ಗಣನೆಯಲ್ಲಿ, p. 343-356. ಜಾಕ್ವೆಸ್ ಗ್ಯಾರಿಗ್ (2004). "ಮೌಲ್ಯ ನಿರ್ಬಂಧವನ್ನು ಸಡಿಲಗೊಳಿಸುವುದು". ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಮೌಲ್ಯ ನಿರ್ಬಂಧ-ಎಸ್. ಎಂ. ಎಲ್. 97ರ ಮೌಲ್ಯ ನಿರ್ಬಂಧದ ಮೇಲಿನ ಎಂ. ಎಲ್. ಟನ್ ಟಿಪ್ಪಣಿಗಳು-ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳ ತತ್ವಗಳು, ಜೆಫ್ರಿ ಸ್ಮಿತ್, ಫ್ಲೋರಿಡಾ ಇಂಟರ್ನ್ಯಾಷನಲ್ ಯೂನಿವರ್ಸಿಟಿ ಪ್ರಕಾರದ ತೀರ್ಮಾನ